使用Uri隐式方式启动Activity并传递参数

要使其他app可以跳转到本app某个Activity,并传递参数,可以使用Uri隐式方式来实现。方法如下:

1.AndroidManifest.xml中增加intent-filter标签:

<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.Activity类的onCreate中添加解析参数的逻辑:

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

3.其他app中跳转时的逻辑:

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

猜你喜欢

转载自blog.csdn.net/chenzhengfeng/article/details/104373577