如何导出活动,以便其他应用程序可以调用它?

时间:2011-11-16 10:19:19

标签: android android-activity sharing

我搜索了很多,但是我没有找到如何导出活动的准确答案,因此应用可以使用startActivityforResult启动它。

我如何实现这一目标?我是否必须在某些方面更改清单?

2 个答案:

答案 0 :(得分:23)

作为Dalmas答案的替代方案,您实际上可以导出Activity而无需创建<intent-filter>(以及提出自定义操作的麻烦)。

Manifest编辑您的Activity标记,如下所示:

<activity
    android:name=".SomeActivity"
    ....
    android:exported="true" />

重要的部分是 android:exported="true" ,此export标记确定“活动是否可以由其他应用程序的组件启动”。如果您的<activity>包含<intent-filter>,则此标记会自动设置为true,如果不是,则默认设置为false

然后启动Activity执行此操作:

Intent i = new Intent();
i.setComponent(new ComponentName("package name", "fully-qualified name of activity"));
startActivity(i);

当然,使用此方法,您需要知道要尝试启动的活动的确切名称。

答案 1 :(得分:14)

您需要在Manifest中声明一个intent-filter(我从条形码扫描器中获取了以下示例):

<activity android:name="...">
    <intent-filter>
        <action android:name="com.google.zxing.client.android.SCAN" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

然后使用相同的操作字符串创建一个intent:

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
startActivityForResult(intent, code);

Android应该开始您的活动(如果有多个应用共享相同的操作字符串,它会显示一个下拉框。)

相关问题