android 通过类名跳转activity,Activity跳转方式总结
一、显式调用方法
方法一:
Intent intent=new Intent(本类,将要跳转的类); //Intent intent=new Intent(MainActivity.this,JumpToActivity.class);
startActivity(intent);
方法二:
Intent intent2=new Intent();
intent2.setClass(本类,将要跳转的类); // intent2.setClass(MainActivity.this,JumpToActivity.class);
startActivity(intent2);
方法三:(此方式可用于打开其它的应用)
Intent intent2=new Intent();
intent2.setComponent(new ComponentName(MainActivity.this, JumpToActivity.class));
startActivity(intent2);
component,目标组件的包或类名称(完整类名):
在使用component进行匹配时,一般采用以下几种形式:
intent.setComponent(new ComponentName(getApplicationContext(), JumpToActivity.class));
intent.setComponent(new ComponentName(getApplicationContext(), "com.liujc.test.JumpToActivity"));
intent.setComponent(new ComponentName("com.liujc.test", "com.liujc.test.JumpToActivity"));
二:隐式调用方法
通过action跳转:
Intent intent = new Intent();
intent.setAction("con.liujc.test.jump");
startActivity(intent);
需要将要跳转到的Activity在AndroidManifest.xml中设置action:
通过Scheme跳转协议跳转:
android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面等。
URL Scheme协议格式:
liujc://goods:8080/goodsDetail?goodsId=20170112
上面的路径 Scheme、Host、port、path、query全部包含:
liujc代表该Scheme 协议名称
goods代表Scheme作用于哪个地址域
goodsDetail代表Scheme指定的页面
goodsId代表传递的参数
8080代表该路径的端口号
URL Scheme如何使用:
在AndroidManifest.xml中对标签增加设置Scheme:
android:name=".GoodsDetailActivity"
android:theme="@style/AppTheme">
获取Scheme跳转的参数:
Uri uri = getIntent().getData();
if (uri != null) {
// 完整的url信息
String url = uri.toString();
Log.e(TAG, "url: " + uri);
// scheme部分
String scheme = uri.getScheme();
Log.e(TAG, "scheme: " + scheme);
// host部分
String host = uri.getHost();
Log.e(TAG, "host: " + host);
//port部分
int port = uri.getPort();
Log.e(TAG, "host: " + port);
// 访问路劲
String path = uri.getPath();
Log.e(TAG, "path: " + path);
List pathSegments = uri.getPathSegments();
// Query部分
String query = uri.getQuery();
Log.e(TAG, "query: " + query);
//获取指定参数值
String goodsId = uri.getQueryParameter("goodsId");
Log.e(TAG, "goodsId: " + goodsId);
}
调用方式:
网页上:(使用系统自带浏览器或者谷歌浏览器)
打开商品详情
原生调用:
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("liujc://goods:8080/goodsDetail?goodsId=20170112"));
startActivity(intent);
如何判断一个Scheme是否有效,有效后再启动:
PackageManager packageManager = getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("liujc://goods:8080/goodsDetail?goodsId=20170112"));
List activities = packageManager.queryIntentActivities(intent, 0);
boolean isValid = !activities.isEmpty();
if (isValid) {
startActivity(intent);
}
android 通过类名跳转activity,Activity跳转方式总结相关推荐
- android studio 跳转后保留原页面数据_Intent详解以及Activity的跳转与数据传递
在上一次讲述Activity的时候,还有一个非常重要且常用的知识点没有讲,就是不同Activity之间的跳转和数据传递.我们在平常在使用app应用的时候,Activity的跳转和数据传递是经常会接触到 ...
- Android 隐式跳转(Activity的隐式跳转)
学而时习之,温故而知新,放假前回顾下android 的 隐式跳转 Activity的显式跳转: 是直接指定需要调用的Activity Activity的隐式跳转: 不明确指定启动哪个Activity, ...
- Android按键响应的几种方式、安卓页面的跳转、页面跳转传参、页面自动跳转、Activity(页面)的生命周期
按键响应的第一种方式: 在XML文件里面设置按键的onClick绑定函数.就像下面的代码,给Button设置onClick属性,在按键被按下的时候,会调用java文件里面的onClickbtton1这 ...
- Android之检查跳转的Activity是否存在
1.需求 android我们知道经常会跳各种设置页面,比如设置默认浏览器页面.设置添加快捷方式权限页面,我们会根据机型进行适配,但是有时候如果找到也找个页面不try catch操作程序会奔溃 2.检查 ...
- Android学习笔记(四):在Activity中跳转--Intent的使用
Android学习笔记(四):在Activity中跳转--Intent的使用 上篇,我们实战了一个很小的项目BMI,通过BMI这个项目,可以很好的理解Activity的程序结构,以方便后面高级API的 ...
- Android跳转动画时长,Android_Activit跳转动画之界面上某个位置并裂开上下拉伸动画跳转,需求:Activity(fragment)跳转的时候 - phpStudy...
Activit跳转动画之界面上某个位置并裂开上下拉伸动画跳转 需求:Activity(fragment)跳转的时候当前界面裂开,上下各自拉出手机屏幕,之后跳转到相对应的Activity.整体效果图如下 ...
- Android activity相互跳转
Android activity相互跳转 学习目标: 请你设计一个简单的问卷,界面自行设计,要求有较好的显示效果 功能要求: 1.输入昵称(不能为空) 2.选择性别 3.问卷内容 "你最喜欢 ...
- Android -- 基础篇 -- Activity跳转动画的五种方式(下)
上一篇文章中我们讲解了在Activity启动过程中获取组件宽高的五种方式.在Activity的启动过程中如果我们直接在生命周期方法中通过view.getWidth()或者是view.getHeight ...
- Android Fragment跳转到Activity的方法
一开始我直接按照Activity页面之间跳转的方法进行的跳转,就是在xml文件中给相应的组件onClick android:onClick="to_search" 在网上查询到的好 ...
- android activity的跳转动画,实现activity跳转动画的若干种方式
第一种: (使用overridePendingTransition方法实现Activity跳转动画) 在Activity中代码如下 /** * 点击按钮实现跳转逻辑 */ button1.setOnC ...
最新文章
- 实现800*600,1024*768两套分辨率方案
- win10有自带测试软件吗,使用windows10自带工具测试系统内存
- boost::interprocess::bufferstream用法的测试程序
- 表的插入、更新、删除、合并操作_20_通过表关联删除多张表
- python解释器的工作原理_Python GIL全局解释器锁详解(深度剖析)
- influxdb删除某一列(tag或者field)
- python发送qq消息linux_python 调用qq邮箱 linux 执行每天自动发送邮件
- 关于Firefox浏览器设置默认字体的教程
- ITSM群(48132184)讨论精选
- 阿铭Linux_网站维护学习笔记20190227
- Factory Track 同步获取 Infor CloudSuite Industrial 数据
- 北京-IT技术狗-顾名思义 解释一下当时随手写下这个名字
- Android SQlite基本用法
- a boo peek_|音译|171120*歌词ΓRed Velvet - Peek-A-Boo
- (10.2.1)15款优秀移动APP产品原型设计工具
- 【实用软件】Json文件查看器(支持查看超大JSON文件)
- CAN与CANOpen(一)
- 【自然语言处理】ELMo 讲解
- LeetCode 876、链表的中间结点
- C#图形教程画笔画刷等
热门文章
- [转]Spark能否取代Hadoop?
- oracle数据库表的导入导出cmd命令大全
- 解决Java compiler level does not match the version of the installed Java project facet.问题
- 可实现自动设置尺寸的图片上传类
- Stars HDU 1541
- Delphi与SQL模糊查询(转载)
- BizTalk Server 2010新功能介绍(六):BizTalk Mapper (下)
- BZOJ4567 SCOI2016背单词(trie+贪心)
- XMLHttpRequest Level 2 使用指南
- 新建Eclipse的web工程目录结构和MyEclipse相似的设置