欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

Android如何通过scheme跳转界面

时间:2021-02-15 10:23:10|栏目:Android代码|点击:

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

需求

通过后台返回链接地址

eg: app://com.bobo.package/path?param1=abc&param2=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&param2=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&param2=cde
application://host/route?param1=abc&param2=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>


上一篇:Android自定义View实现游戏摇杆键盘的方法示例

栏    目:Android代码

下一篇:Android中通知栏跳动问题解决方法

本文标题:Android如何通过scheme跳转界面

本文地址:http://www.codeinn.net/misctech/63554.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有