欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android如何通过scheme跳转界面

程序员文章站 2023-11-17 23:23:22
android通过scheme跳转界面,应该如何实现? 需求 通过后台返回链接地址 eg: app://com.bobo.package/path?param...

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>


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