我有一个 Activity 可以作为各种 Intent 的 Hook 。具体来说,VOICE_COMMAND 和 CALL_PRIVILEGED。 (这是使用这些的要求。)
<activity android:name=".MyActivity"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.VOICE_COMMAND" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.CALL_PRIVILEGED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="tel" />
</intent-filter>
</activity>
我要求用户将我的应用设置为这些 Intent 的默认操作,这样他们就不必每次都选择它。这也是一个要求。
问题是在某些情况下我希望我的 Activity 透明地工作并将 Intent 传递给拨号程序或其他应用程序。这应该可以由用户选择。我通过在代码的某些位置对我的 Activity 使用 getPackageManager().setComponentEnabledSetting(myCompName, isEnabled, PackageManager.DONT_KILL_APP)
实现了这一点。
有没有更优雅的方法来做到这一点?我尝试了 startNextMatchingActivity(getIntent())
但它没有启动任何东西(返回 false)。这是否意味着如果存在默认操作,则 Intent 解析将忽略其他所有内容?
最佳答案
目前(在 Android 2.3 上)除了手动转发 Intent 之外似乎没有其他方法。此外,要发送 CALL_PRIVILEGED Intent ,应用必须具有只有系统应用才有的特殊权限。 (否则应用将收到不允许的异常。)
总而言之,必须将 Intent 转换为我的应用可以发送的其他 Intent ,并通过从 PackageManager.queryIntentActivities() 中检索适用 Activity 列表来手动启动下一个 Activity 。 API。
关于android - 如果我的应用程序是默认应用程序,我该如何开始下一个匹配 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7596929/