-
2021-06-07 14:34:58
本文将带你了解Android应用开发之android Activity Scheme跳转协议运用讲解,希望本文对大家学Android有所帮助。
Scheme协议
Android中的Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面。
服务器可以定制化跳转app页面app可以通过Scheme跳转到另一个app页面可以通过h5页面跳转app原生页面
协议格式
?1Uri.parse("qh://test:8080/goodsgoodsId=8897&name=fuck")
qh代表Scheme协议名称test代表Scheme作用的地址域8080代表改路径的端口号/goods代表的是指定页面(路径)goodsId和name代表传递的两个参数
Scheme使用
定义一个Scheme
获取Scheme跳转的参数
Uri uri = getIntent().getData(); if (uri != null) { // 完整的url信息 String s = uri.toString(); sb.append(s + "\n"); // scheme部分 String scheme = uri.getScheme(); sb.append("scheme=" + scheme + "\n"); // host部分 String host = uri.getHost(); sb.append("host=" + host + "\n"); // 访问路劲 String path = uri.getPath(); sb.append("path=" + path + "\n"); //port部分 int port = uri.getPort(); sb.append("port=" + port + "\n"); // Query部分 String query = uri.getQuery(); sb.append("query=" + query + "\n"); //获取指定参数值 String goodsId = uri.getQueryParameter("goodsId"); sb.append("goodsId=" + goodsId + "\n"); //列举所以参数名 Set queryParameterNames = uri.getQueryParameterNames(); tv_scheme.setText(sb.toString()); }
调用方式
?1231. 原生调用Intent intent1 = new Intent(Intent.ACTION_VIEW, Uri.parse("qh://test:8080/goodsgoodsId=8897&name=fuck")); startActivity(intent1);
?122. html调用打开商品详情
判断某个Scheme是否有效
?123456Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("qh://test:8080/goodsgoodsId=8897&name=fuck"));List activities = getPackageManager().queryIntentActivities(intent, 0);boolean isValid = !activities.isEmpty();if (isValid) { startActivity(intent);}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!
更多相关内容 -
Scheme跳转协议(android事例demo )
2018-11-27 10:15:33Android中的Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面。 服务器可以定制化跳转app页面 app可以通过Scheme跳转到另一个app页面 可以通过h5页面跳转app原生页面 -
11 android产品研发-应用内跳转协议scheme.md
2021-06-07 14:33:14上一篇文章中我们讲解了在Android App的实际开发中,尽量不在静态变量、全局变量中保存数据,这是因为App的进程可能是不安全的,在部分手机中其有可能被系统杀死,从而造成静态全局变量重新初始化。而这时候App当前...上一篇文章中我们讲解了在Android App的实际开发中,尽量不在静态变量、全局变量中保存数据,这是因为App的进程可能是不安全的,在部分手机中其有可能被系统杀死,从而造成静态全局变量重新初始化。而这时候App当前页面的Activity还会被保存在内存中,从而造成App并没有被重启的假象,但是这只是显示的页面没有被杀死,而进程实际上是被重新启动了的。这时候在使用已被重新初始化的静态变量就会发生一些不可预知的错误,具体关于不在静态变量中保存数据的问题,可以参考这里的: android产品研发(十)-->不使用静态变量保存数据
而本文讲解的是一种App内页面跳转协议,这里的跳转包括应用内跳转、H5与Native跳转,服务器通知客户端如何跳转等。
在讲解应用内跳转协议之前我们先讲解一下H5与Native相互跳转的相关知识点。现在越来越多的App采用了Native + H5方式开发,其中Native与H5页面如何交互?google提供了一个公共的方式:js与native互调,即js可以调用Native方法,Native同样也可以调用js方法;
**但是这种交互方式存在着不少问题:**
1、Java 调用 js 里面的函数、效率并不是很高、估计要200ms左右吧、做交互性很强的事情、这种速度很难让人接受、而js去调Java的方法、速度很快、50ms左右、所以尽量用js调用Java方法
2、Java 调用 js 的函数、没有返回值、调用了就控制不到了
3、Js 调用 Java 的方法、返回值如果是字符串、你会发现这个字符串是 native 的、转成 locale 的才能正常使用、使用 toLocaleString() 函数就可以了、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间
4、网页中尽量不要使用jQuery、执行起来需要5-6秒、最好使用原生的js写业务脚本、以提升加载速度、改善用户体验
5、android4.2以下的系统存在着webview的js对象注入漏洞...(不清楚的可以google)
基于这种种的原因,我们并未采用这种方式用于Native与webview交互,而是采用scheme + cookie的方式;
这里的scheme是一种页面内跳转协议,主要用于支持一下几种场景:
- 服务器下发跳转路径,客户端根据服务器下发跳转路径跳转相应的页面;
- H5页面点击锚点,根据锚点具体跳转路径App端跳转具体的页面;
- App端收到服务器端下发的PUSH通知栏消息,根据消息的点击跳转路径跳转相关页面
下面我将简单介绍一下scheme的基本概念以及以上三种场景下scheme的具体应用。
## URL scheme 概述
### URL scheme 的作用
客户端应用可以向操作系统注册一个 URL scheme,该 scheme 用于从浏览器或其他应用中启动本应用。通过指定的 URL 字段,可以让应用在被调起后直接打开某些特定页面,比如车辆详情页、订单详情页、消息通知页、促销广告页等等。也可以执行某些指定动作,如订单支付等。也可以在应用内通过 html 页来直接调用显示 app 内的某个页面。
### URL scheme 的格式
客户端自定义的 URL 作为从一个应用调用另一个的基础,遵循 RFC 1808 (Relative Uniform Resource Locators) 标准。这跟我们常见的网页内容 URL 格式一样。
一个普通的 URL 分为几个部分,`scheme`、`host`、`relativePath`、`query`。
比如:`http://www.baidu.com/s?rsv_bp=1&rsv_spt=1&wd=NSurl&inputT=2709`,这个URL中,`scheme` 为 `http`,`host` 为 `www.baidu.com`,`relativePath` 为 `/s`,`query` 为 `rsv_bp=1&rsv_spt=1&wd=NSurl&inputT=2709`。
一个应用中使用的 URL 例子(该 URL 会调起车辆详情页):`uumobile://mobile/carDetail?car_id=123456`,其中 `scheme` 为 `uumobile`,`host` 为 `mobile`,`relativePath` 为 `/carDetail`,`query` 为 `car_id=123456`。
###Scheme定义Activity
1)在androidmanifest.xml中定义scheme
```
android:name=".UI.translate.NativeAppActivity"
android:label="@string/app_name">
```
这样我们便定义了能够接受scheme请求的activity实例,当网页或者是android代码发送这种规则scheme的请求的时候就能够吊起NativeAppActivity了。
2)当然就是实现NativeAppActivity
```
/**
* Created by admin
*/
public class NativeAppActivity extends Activity{
public String tag = "NativeAppActivity";
public Activity mContext = null;
public void onCreate(Bundle b)
{
super.onCreate(b);
mContext = this;
Uri uri = getIntent().getData();
if (uri != null)
{
List pathSegments = uri.getPathSegments();
String uriQuery = uri.getQuery();
Intent intent;
if (pathSegments != null && pathSegments.size() > 0) {
// 解析SCHEME
if (someif) {
dosomething();
}
else {
// 若解析不到SCHEME,则关闭NativeAppActivity;
finish();
}
} else {
finish();
}
} else {
finish();
}
}
}
```
NativeAppActivity这个类中主要用于实现对scheme的解析,然后做出相应的动作,比如请求scheme跳转登录页面,我们可以这样定义
```
uumobile://appname/gotoLogin
```
然后我们解析出scheme如果是这样的结构就跳转登录页面。。。
这里简单说一下,我们可以通过Intent对象获取调用的scheme的host等信息
```
this.getIntent().getScheme();//获得Scheme名称
this.getIntent().getDataString();//获得Uri全部路径
```
3)通过服务器下发跳转路径跳转相应页面
```
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("uumobile://yongche/123123123")));
```
这里的"uumobile://yongche/123123123"就是服务器下发的跳转路径,当我们执行startActivity的时候就会调起NativeAppActivity,然后我们通过在NativeAppActivity解析scheme的内容,跳转相应的页面。
4)通过在H5页面的锚点跳转相应的页面
```
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//解析scheme
if (url.indexOf(H5Constant.SCHEME) != -1) {
try {
Uri uri = Uri.parse(url);
String[] urlSplit = url.split("\\?");
Map queryMap = new HashMap();
String h5Url = null;
if (urlSplit.length == 2) {
queryMap = H5Constant.parseUriQuery(urlSplit[1]);
h5Url = queryMap.get(H5Constant.MURL);
}
// 跳转NativeAppActivity解析
{
// 若设置刷新,则刷新页面
if (queryMap.containsKey(H5Constant.RELOADPRE) && "1".equals(queryMap.get(H5Constant.RELOADPRE))) {
h5Fragment.isNeedFlushPreH5 = true;
}
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
h5Activity.startActivityForResult(intent, H5Constant.h5RequestCode);
}
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
// 打电话
else if (url.indexOf("tel://") != -1) {
final String number = url.substring("tel://".length());
Config.callPhoneByNumber(h5Activity, number);
return true;
} else if (url.indexOf("tel:") != -1) {
final String number = url.substring("tel:".length());
Config.callPhoneByNumber(h5Activity, number);
return true;
}
// 其他跳转方式
else {
view.loadUrl(url);
//如果不需要其他对点击链接事件的处理返回true,否则返回false
return false;
}
}
```
可以发现我们为Webview设置了WebViewClient,并重写了WebViewClient的shouldOverrideUrlLoading方法,然后我们解析锚点的url,并根据解析的内容调起NativeAppActivity的scheme Activity,然后在NativeAppActivity中解析scheme的内容并跳转相应的页面。
5)根据服务器下发通知栏消息,App跳转相应的页面
```
public class NotificationActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
L.i("接收到通知点击事件...");
Intent realIntent = getIntent().getParcelableExtra(NotifeConstant.REAL_INTENT);
// 解析scheme并跳转
gotoRealScheme(this, realIntent);
}
/**
* notification中跳转SCHEME,根据有效时间判断跳转URL地址
* 跳转之后更具网络请求判断用户当前状态
*/
private void gotoRealScheme(Context context, Intent realIntent) {
if (realIntent == null || context == null) {
finish();
return;
}
try {
L.i("开始解析通知中的参数...");
long startShowTime = realIntent.getLongExtra(NotifeConstant.START_SHOW_TIME, 0);
// 有效期时间,单位:s(秒)
long validTime = realIntent.getLongExtra(NotifeConstant.VALID_TIME, 0);
long currentTime = System.currentTimeMillis();
String validActionUrl = realIntent.getStringExtra(NotifeConstant.VALID_ACTION_URL);
String invalidActionUrl = realIntent.getStringExtra(NotifeConstant.INVALID_ACTION_URL);
Intent schemeIntent;
L.i("开始根据URL构建Intent对象...");
if ((currentTime - startShowTime) / 1000L <= validTime) {
schemeIntent = H5Constant.buildSchemeFromUrl(validActionUrl);
} else {
schemeIntent = H5Constant.buildSchemeFromUrl(invalidActionUrl);
}
if (schemeIntent != null) {
// 设置当前页面为通知栏打开
Config.isNotificationOpen = true;
context.startActivity(schemeIntent);
finish();
//对通知栏点击事件统计
MobclickAgent.onEvent(context, UMCountConstant.PUSH_NOTIFICATION_CLICK);
} else {
finish();
}
} catch (Exception e) {
// 异常情况下退出当前Activity
finish();
}
}
}
```
服务器下发的所有的通知都是先跳转这里的NotificationActivity,然后在这里执行跳转其他Activity的逻辑,而这里的H5Constant的buildSchemeFromUrl方法就是构造跳转页面Intent对象的,我们可以看一buildSchemeFromUrl方法的具体实现:
```
/**
* 从scheme的url中构建出Intent,用于界面跳转
*
* @param url
* @return
*/
public static Intent buildSchemeFromUrl(String url) {
if (url != null && url.indexOf(H5Constant.SCHEME) != -1) {
Uri uri = Uri.parse(url);
String[] urlSplit = url.split("\\?");
Map queryMap = new HashMap();
String h5Url = null;
if (urlSplit.length == 2) {
queryMap = H5Constant.parseUriQuery(urlSplit[1]);
h5Url = queryMap.get(H5Constant.MURL);
}
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
if (!TextUtils.isEmpty(h5Url)) {
intent.putExtra(H5Constant.MURL, h5Url);
}
return intent;
}
return null;
}
```
这样我们就搞构造除了跳转NativeAppActivity的Intent对象,并将scheme字符串传递给了NativeAppActivity,这样在NativeAppActivity中就可以解析scheme字符串并执行相应的跳转逻辑了。
**总结:**
android中的scheme是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;
通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面等。
另外对产品研发技术,技巧,实践方面感兴趣的同学可以参考我的:
一键复制
编辑
Web IDE
原始数据
按行查看
历史
-
Android Scheme跳转协议 (基础)
2022-03-08 18:17:12Android中的Scheme是一种页面跳转协议,和网站通过URL的形式访问一样,APP同样可以通过这种方式进行跳转,它可以很方便的满足我们在一些场景中的需求: 假若遇到一个这个需求,h5想跳转到app的页面里面,有两种解决...Android中的Scheme是一种页面跳转协议,和网站通过URL的形式访问一样,APP同样可以通过这种方式进行跳转,它可以很方便的满足我们在一些场景中的需求:
假若遇到一个这个需求,h5想跳转到app的页面里面,有两种解决方案,一种就是原生app做一个JavascriptInterface的接口提供给js调用。
另一种就可以通过Scheme协议跳转,不需要去调java的接口。
具体用法:
在清单文件当中设置scheme<activity android:name=".xxx.xxxActivity" android:exported="true"> <intent-filter> <data android:host="ddd" android:path="/abc" android:port="123" android:scheme="home" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> </activity>
scheme:协议(不要填大写,不然h5调不起)
host:地址
port:端口号
path:路径定义一个这样的协议。地址,端口号,路径,不填也可以,只需要一个scheme就行。
path一定要有/
webview用法写一个html页面,在点击事件里面写入这个协议
<!DOCTYPE html> <html> <body> <!-- href里面直接放协议地址 --> <a id="dianji" href='home://ddd:123/abc?params=100&age=26'>点击这里</a> </body> </html>
?后面跟http一样,可以放参数,用&来添加后续参数
新建一个文件,把上面的html放进去,更改后缀为html
新建一个assets文件夹,放入这个html新建一个Activity,布局文件里面写一个WebView控件,直接加载这个html
webView.loadUrl("file:///android_asset/web/index.html")
这时候就可以直接跳转到你配置scheme的那个Activity了
Activity获取参数值
在onCreate中通过intent获取参数
原生app用法val url = "home://ddd:123/abc?params=100&age=26" val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) startActivity(intent)
-
Android应用跳转Scheme协议
2017-10-19 11:00:16详见http://blog.csdn.net/huaxun66/article/details/78274600 -
Android中Scheme跳转协议
2021-06-03 12:14:23Android中Activity之间的跳转我们可以直接使用显示或者隐式意图跳转都可以但是实际开发过程中可能会碰到这类问题比如App做活动,通过推送过来的消息告诉客户端跳转到某某界面,客户端本地自然不能写死,不然就麻烦了...Android中Activity之间的跳转我们可以直接使用显示或者隐式意图跳转都可以
但是实际开发过程中可能会碰到这类问题
比如App做活动,通过推送过来的消息告诉客户端跳转到某某界面,客户端本地自然不能写死,不然就麻烦了
今天小结一下开发过程中碰到的这类问题的解决方式:
我们都知道网站都是通过URL的形式访问的
同样的我们App也完全可以通过这种方式进行跳转
举个小例子
点我试试
andy为自定义的scheme,固定字符串。
在清单文件中加入IntentFilter
在TextView中显示
当然这里设置了当前的Activity的启动模式为singleTask,防止MainActivity重复启动
然后在MainActivtiy中重写onNewIntent方法,获取参数
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();
if (uri != null) {
System.out.println(uri.toString());
}
}
断点可以看到已经有数据传递过来了
这个时候我们只需要根据Uri获取里面的参数然后做相应的动作即可
Uri结构的基本形式
[scheme:][//domain][path][?query][#fragment]
现在我们定义具体的参数
比如我们跳转的页面是SchemeActivtiy参数buffer
domain=scheme_activity
buffer=这是个字符串
点我一下
private static final String SCHEME_DOMAIN = "scheme_activity";
private static final String TAG = MainActivity.class.getSimpleName();
相关解析代码
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();
if (uri != null) {
dispatchUri(uri);
} else {
Log.e(TAG, "Uri is null");
}
}
private void dispatchUri(Uri uri) {
try {
final String domain = uri.getAuthority();
if (TextUtils.equals(SCHEME_DOMAIN, domain)) {
final String buffer = uri.getQueryParameter("buffer");
final int type = Integer.valueOf(uri.getQueryParameter("type"));
Toast.makeText(this, type + " " + buffer, Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
Log.e(TAG, "Uri Parse Error");
}
}
点击测试
-
Android Scheme的跳转协议,跳转到app的指定页面
2021-06-05 05:14:33Scheme协议Android中的Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面服务器可以定制化跳转app页面app可以通过Scheme跳转到另一个app页面可以通过h5页面跳转app原生页面定义协议的... -
Android 利用scheme协议进行跳转
2021-07-02 14:39:04android中的scheme是一种页面内跳转协议。 通过定义自己的scheme协议,可以非常方便跳转app中的各个页面; 通过scheme协议,服务器可以定制化告诉App跳转到APP内部页面。 之前项目都是我们客户端和服务器端用自定义... -
Android 利用scheme页面内跳转协议进行跳转
2021-06-02 14:39:13android中的scheme是一种页面内跳转协议。通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转到APP内部页面。之前项目都是我们客户端和服务器端用自定义json... -
URL_Scheme页面跳转协议使用Demo
2019-01-11 11:23:41URL_Scheme页面跳转协议使用Demo,基于Kotlin,下载使用问题请留言沟通 -
Android如何通过scheme跳转界面
2020-08-29 21:56:00Android如何通过scheme跳转界面,这篇文章就为大家介绍了Android通过scheme跳转界面的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
Android Scheme 跳转协议
2019-01-22 11:21:27Android的scheme是一种页面内跳转的协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便的跳转APP中的各个页面;通过scheme协议,服务器可以定制化的告诉APP跳转哪个界面,可以用个通过通知栏的... -
android H5 应用内跳转Scheme协议
2021-06-05 06:45:03什么是URL Scheme概述:android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,... -
Android采用Scheme协议进行跳转
2019-12-30 17:07:581.android中的scheme是一种页面内跳转协议。 2.通过定义自己的scheme协议,可以非常方便跳转app中的各个页面; 3.通过scheme协议,服务器可以定制化告诉App跳转到APP内部页面。 之前项目都是我们客户端和服务器端... -
android schema跳转协议
2018-08-29 09:21:13android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制... -
android app 跳转钉钉直播
2022-03-02 11:52:36* @param context 安卓上下文环境,推荐Activity Context * @param url 需要在钉钉客户端打开的页面地址 */ private void startDingtalkApp(Context context , String url){ Intent intent = new Intent(Intent... -
android Activity Scheme跳转协议
2018-05-09 21:49:05转载:原文https://blog.csdn.net/lishuiyuntian/article/details/77477756Scheme协议Android中的Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面。服务器可以定制化跳转app页面app... -
Android从一个应用跳转到另一个应用
2015-06-15 18:16:59这是一个实现在Android中,从一个应用跳转到另一个应用的demo -
Android 协议跳转app
2018-05-10 17:07:05协议跳转 使app作为给定链接的默认处理者 使用命令验证绑定情况 代码中应用 Android Studio 3.0中操作App Links 协议跳转 当我们在应用中点击一个协议链接,通常会提示我们选择合适的浏览器或者app去打开它... -
Scheme跳转协议
2018-08-10 11:10:21Scheme 是一种页面内跳转协议 一、应用场景有三种: 1.服务器可以定制化的跳转到app的某一个页面(体现在服务器推送一条消息,我们跳到广告页/账单页等。) 2.h5页面可以定制化跳转到app的某一个页面(体现在h5... -
Android 路由跳转(二)
2021-06-09 06:24:068种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 这一章我会介绍的内容是当我们一段path匹配上多个路由规则的时候我们应该如何处理。... 下面是我的github 路由跳转项目。 -
Android页面跳转
2021-05-19 21:23:00文章目录Activity的创建和跳转什么是ActivityActivity的创建(手动)AndroidManifest.xml文件跳转示例点击按钮给第二个界面发送字符串 Activity的创建和跳转 什么是Activity Activity是Android应用中最重要的核心... -
Android应用内跳转Scheme协议
2017-10-18 16:38:14之前一篇文章WebView使用解析(一)之基本用法我讲过...而JAVA调用JS代码则是通过javascript:伪协议来实现的,即javascript:methodName(params……)。但是这种交互方式存在着不少问题: 1、Java 调用 js 里面的函数, -
scheme协议 H5跳转打开Android
2021-08-11 11:01:28scheme协议 H5跳转打开Android Android端 在AndroidManifest.xml中的Activity添加协议配置 <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name=... -
Android Studio第三十八期 - HIOS跳转协议解决URI跳转原生页面并传递参数(示例代码)
2021-06-04 13:58:38} } 方法1://hios activity跳转 AdListItem adListItem = new AdListItem(); adListItem.setAid("1"); adListItem.setBanner("imgUrl"); adListItem.setUrl("hios://jump.twomainactivity"); HiosHelper.... -
Android scheme 跳转的设计与实现详解
2021-01-03 11:40:50为了解决这些问题,App 一般都会自定义一个 scheme 跳转协议,多端都实现这个协议,以此来解决各种运营需求。今天就来解析下QMUI最新版QMUISchemeHandler的设计与实现。 一个 scheme 的格式大概是这样子: scheme... -
Android Activity跳转方式总结分享
2021-06-05 08:32:49Activity跳转方式总结~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1、显式调用方法方法一:Intent intent=new Intent(本类,将要跳转的类); //Intent intent=new Intent...