0

我的 phonegap 应用程序使用 zxing 条码扫描器。我还从 zxing 安装了一个演示应用程序(barcodescanner)。现在,在我的 phonegap 应用程序中,当我调用条形码扫描仪时,android 会询问我选择哪个应用程序来执行此操作(我的应用程序和 zxing 条形码扫描仪)。如何避免这种情况?我不希望 android 像这样询问我的用户

4

2 回答 2

0

您可以调用您发送setPackage()Intent内容以将其定向到仅一个可能的应用程序。在这里,您将设置为"com.google.zxing.client.android".

于 2012-07-04T07:45:54.270 回答
0

如果您没有更改任何代码,默认情况下 Zxing 会按照以下意图进行注册。

<action android:name="com.phonegap.plugins.barcodescanner.SCAN" />

您可以通过执行以下更改来更改它以使其更具体到您的应用程序。

// in BarcodeScanner.java plugin file

public void scan() {
    // changed to custom intent
    Intent intentScan = new Intent("com.dhaval.phonegap.plugins.barcodescanner.SCAN");
    intentScan.addCategory(Intent.CATEGORY_DEFAULT);

    this.ctx.startActivityForResult((Plugin) this, intentScan, REQUEST_CODE);
}


public void encode(String type, String data) {
    // changed to custom intent
    Intent intentEncode = new Intent("com.dhaval.phonegap.plugins.barcodescanner.ENCODE");
    intentEncode.putExtra("ENCODE_TYPE", type);
    intentEncode.putExtra("ENCODE_DATA", data);

    this.ctx.startActivity(intentEncode);
}

在您的应用程序 AndroidManifest.xml 文件中,将意图过滤器字符串更改为您在上面的 BarcodeScanner.java 文件中使用的自定义字符串

<activity android:name="com.google.zxing.client.android.CaptureActivity"
            android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
            android:windowSoftInputMode="stateAlwaysHidden">
            <intent-filter>
                <action android:name="com.dhaval.phonegap.plugins.barcodescanner.SCAN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:name="com.google.zxing.client.android.encode.EncodeActivity"
            android:label="@string/share_name">
            <intent-filter>
                <action android:name="com.dhaval.phonegap.plugins.barcodescanner.ENCODE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
于 2012-07-04T04:41:50.007 回答