我的phonegap应用程序使用zxing条形码扫描仪。我从zxing安装了一个演示应用程序(barcodescanner)。现在,在我的phonegap应用程序中,当我调用条形码扫描仪时,安卓会让我选择执行此操作的应用程序(我的应用程序和zxing条形码扫描程序)。怎么避免这个?我不想让android问我这样的用户
答案 0 :(得分: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>
答案 1 :(得分:0)
您可以在发送的setPackage()
上致电Intent
,将其指向一个可能的应用程序。在这里,您将设置为"com.google.zxing.client.android"
。