【问题标题】:Android: Avoiding "complete action using" when there's an app on the phone with the same pkg name as the libraryAndroid:当手机上有一个与库名称相同的应用程序时,避免“使用完整的操作”
【发布时间】:2023-10-22 17:00:01
【问题描述】:

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

【问题讨论】:

    标签: java android zxing android-library android-inflate


    【解决方案1】:

    如果您能够定义调用 Intent 的内容,这很容易 - 只需为其提供指向您的活动的自定义字符串。

    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>
    

    您的活动可能会扩展图书馆的活动以完成这项工作。

    如果您无法影响已发送的Intent,我认为无法绕过选择器对话框,除非 a) 卸载处理 com.google.zxing.client.android 的应用程序,因此只剩下一个 b) 用户选择您的应用程序来处理 @987654326 @“总是”,而不是“仅一次”。

    【讨论】:

    • 谢谢,这不是确切的解决方案,但它帮助我找到了它。我愚蠢地没有考虑意图过滤器,所以当我尝试以前的想法时,它们不起作用。我的解决方案是重命名库的包并将意图过滤器指向那个。它以前不起作用,因为我正在指导它的活动。 IE。 我应该将 更改为我的新包名
    最近更新 更多