离子造物主+科尔多瓦条码扫描器写:假
我写了一个非常简单的离子包(作为测试的一部分)火起来条形码扫描器离子造物主+科尔多瓦条码扫描器写:假
我已经安装了科尔多瓦 - 插件 - barcodescanner和现在用的是以下
$scope.scanBarcode = function() {
$cordovaBarcodeScanner
.scan()
.then(function(barcodeData) {
alert(barcodeData);
}, function(error) {
alert(error);
});
}
然后我有一个非常简单的
<button ng-click="scanBarcode()">Scan</button>
我已经编译应用程序,生成APK我的,安装在设备上,确认该应用程序有权限启用d用于相机(和存储)。
当我点击扫描按钮,一个错误射击是
写设置:假
我很茫然哪里开始,因为是barcodescanner没有特定的错误文档。
只是建议我已经能够在编译应用程序后使用cordova-plugin-camera确定离子创建者。
其实我也遇到过这个问题,它可能会发生在Android 6.0及以上版本。
在插件里面,下面这些代码是触发它的代码。
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP + 1) {
Class systemClass = Settings.System.class;
try {
Method canWriteMethod = systemClass.getDeclaredMethod("canWrite", Context.class);
boolean retVal = (Boolean) canWriteMethod.invoke(null, this.cordova.getActivity());
Log.d(LOG_TAG, "Can Write Settings: " + retVal);
if (!retVal && !action.equals("requestWriteSettings") && !action.equals("getWriteSettings")) {
//can't write Settings
this.callbackContext.error("write settings: false");
return false;
}
this.writeSettings = retVal;
} catch (Exception ignored) {
Log.e(LOG_TAG, "Could not perform permission check");
this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ILLEGAL_ACCESS_EXCEPTION));
}
}
所以我认为我们需要通知插件制作者或提交定为这一个。
暂时你可以做的是通过评论我分享的整个模块来传递它。似乎它是从我身边工作,还没有检查这是否实际上在代码中的某处使用。为什么它必须被调用。
另一种适当的方式,它是通过实施以下,以提高代码:
A.包括在AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
B.将允许或要求用户允许写设置,通过调用所需的意图:
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + this.cordova.getActivity().getPackageName()));
this.cordova.getActivity().startActivity(intent);
UPDATE
C.这是MoleDesign建议的,如下面答案之一所述。另一种解决方案是一种解决方法是降低SDK版本,在project.properties改变它:
target=android-23
我做了大部分的这些没有成功,但是我有固定的问题,我将文档下方 – MOLEDesign
不过谢谢你的细节,我DIDNT改变了插件本身,但也许你可以将你的发现提交给GIT repo? – MOLEDesign
我已经链接到这个问题上的科尔多瓦git作为参考,因为你的工作似乎无价 – MOLEDesign
这似乎从SDK-25及以上的一些科尔多瓦插件有问题。我通过改变项目解决了我的问题。属性文件从
target=android-25
到
target=android-23
这也可在24个工作,但我没有那么SDK安装
只要一个内置的应用程序,条形码阅读器工作正常
我也有这个错误,并设法通过将cordova-plugin-barcodescanner
从版本0.7.1
恢复到版本0.7.0
希望这节省了一些人的挫折时间,我试图解决这个错误。
详细博客:http://sforsuresh.in/getting-issue-installation-cordova-barcodescanner-plugin/ –