软件编程
位置:首页>> 软件编程>> Android编程>> Android如何通过scheme跳转界面

Android如何通过scheme跳转界面

作者:huagbo  发布时间:2021-08-11 05:19:41 

标签:Android,scheme,跳转界面

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>

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com