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"/*沒有配置hostpath*/
                />
      </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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章