首页 > 系统 > Android > 正文

Android如何通过scheme跳转界面

2019-12-12 02:23:51
字体:
来源:转载
供稿:网友

Android通过scheme跳转界面,应该如何实现?

需求

通过后台返回链接地址

eg: app://com.bobo.package/path?param1=abc¶m2=cde

跳转到指定的Activity 并带入参数

实现

1.在manifest中配置Activity

<activity android:name=".ActivityName">   <intent-filter>     <action android:name="android.intent.action.VIEW"/>     <category android:name="android.intent.category.DEFAULT"/>     <category android:name="android.intent.category.BROWSABLE"/>      <data android:scheme="app"         android:host="com.bobo.package"         android:path="/path"/>   </intent-filter></activity>

2.实现跳转

private void startActivity(Context context) {    try {      Uri uri = Uri.parse("app://com.bobo.package/path?param1=abc¶m2=cde");      Intent intent = new Intent();      intent.setAction(Intent.ACTION_VIEW);      intent.setData(uri);      PackageManager packageManager=getPackageManager();      ComponentName componentName=intent.resolveActivity(packageManager);      if (componentName!=null){        context.startActivity(intent);      }    } catch (Exception e) {      e.printStackTrace();    }  }

3.Activity中处理数据获取参数

private void dealScheme() {    Intent intent = getIntent();    String action = intent.getAction();    Uri uri=null;    if (Intent.ACTION_VIEW.equals(action)) {      Uri uri= intent.getData();    }    if(uri==null)      return;    String param1=url.getQueryParameter("param1");    String param2=url.getQueryParameter("param2");    // doSomething(param1,param2);}

填坑

1.如下两个Activity 当通过scheme 跳转界面时 ,系统会提示选择打开方式 因为没有精确匹配要跳哪个界面

<activity android:name=".ActivityAAAAAA">   <intent-filter>     <action android:name="android.intent.action.VIEW"/>     <category android:name="android.intent.category.DEFAULT"/>     <category android:name="android.intent.category.BROWSABLE"/>      <data android:scheme="app"/*没有配置host 和path*/        />   </intent-filter></activity><activity android:name=".ActivityBBBBBB">   <intent-filter>     <action android:name="android.intent.action.VIEW"/>     <category android:name="android.intent.category.DEFAULT"/>     <category android:name="android.intent.category.BROWSABLE"/>      <data android:scheme="app"         android:host="com.bobo.package"        />   </intent-filter></activity>

2.如果不同的链接都要跳到一个Activity

eg: app://com.bobo.package/path?param1=abc¶m2=cde
application://host/route?param1=abc¶m2=cde

Activity配置

<activity android:name=".ActivityName">   <intent-filter>     <action android:name="android.intent.action.VIEW"/>     <category android:name="android.intent.category.DEFAULT"/>     <category android:name="android.intent.category.BROWSABLE"/>     <data android:scheme="app"        android:host="com.bobo.package"        android:path="/path"/>     <data android:scheme="application"       android:host="host"       android:path="/route"/>   </intent-filter></activity>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表