Android:当 phone 上有与库具有相同 pkg 名称的应用程序时,避免 "complete action using"

Android: Avoiding "complete action using" when there's an app on the phone with the same pkg name as the library

我正在使用条形码扫描库 ZXing。它也是一个可以独立下载和安装的应用程序,但我目前将它用作一个库以集成到我的应用程序中。我希望能够调用该库并启动其中一项活动。为此,我使用 'intent' 和 'startactivityforresult',其中我声明了包名称 'com.google.zxing.client.android'。在这样做时,它提示我能够在已安装的独立条形码应用程序或我的应用程序之间进行选择。我需要绕过该对话框,以便默认情况下它只会选择我的应用程序。这很有趣,因为我相信我不能使用普通方法绕过 'complete action using' 对话框的原因是该应用程序与我正在使用的库具有相同的包名。任何援助将不胜感激。如果您需要代码或图片,我会 post,但我相信我已经提供了足够的信息。

如果您能够定义调用 Intent 的内容,那很简单 - 只需为其提供指向您的 activity.

的自定义字符串
Intent intent = new Intent("com.yourapp.package.SOME_ACTION")

并在清单中注册操作:

<activity android:name=".package.CalledActivity">
    <intent-filter>
        <action android:name="com.yourapp.package.SOME_ACTION"/>
    </intent-filter>
</activity>

您的 activity 可以扩展图书馆的 activity 来完成这项工作。

如果你不能影响发送 Intent 我认为绕过选择器对话框是不可能的,除了 a) 卸载处理 com.google.zxing.client.android 的应用程序所以只剩下一个 b) 用户选择您的应用程序处理 Intent "Always",而不是 "Just Once".