Use Uri to implicitly start Activity and pass parameters

To enable other apps to jump to a certain activity of this app and pass parameters, you can use Uri to achieve it implicitly. Methods as below:

1. Add the intent-filter tag in AndroidManifest.xml:

<activity
    android:name=".ui.MainActivity"
    android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <!-- 在data里设置了scheme和host,则该Activity可以接收和处理类似于"data://main/XXX"的链接 -->
        <data
            android:host="main"
            android:scheme="data" />
    </intent-filter>
</activity>

2. Add the logic of parsing parameters in the onCreate of the Activity class:

Uri uri = getIntent().getData();
if (uri != null) {
    // 通过隐式方式跳转而来
    String id = uri.getQueryParameter("id");
    String name = uri.getQueryParameter("name");
    // 逻辑处理
}

3. Logic when jumping in other apps:

Uri uri = Uri.parse("data://main/?id=id1&name=name1");
Intent intent = new Intent(null, uri);
startActivity(intent);

 

Guess you like

Origin blog.csdn.net/chenzhengfeng/article/details/104373577