我遇到一个问题,找到了原因,但是我无法解决。
我的cordova应用在Android 8.0.0上崩溃。我做了一个日志,显示该应用程序正在尝试访问联系人。
奇怪的是我没有联系人插件,也没有在我的应用程序中使用联系人。
在logcat上,出现此错误:
12-11 17:29:42.094 E / AndroidRuntime(5609):java.lang.RuntimeException:java.lang.RuntimeException:java.lang.SecurityException:权限被拒绝:打开提供程序com.android.providers.contacts.ContactsProvider2来自ProcessRecord {6155964 5609:com.pierrickmartelliere.UPHAIRR / u0a210}(pid = 5609,uid = 10210)需要android.permission.READ_CONTACTS或android.permission.WRITE_CONTACTS
我尝试了一切,添加了
<config-file parent="/manifest" target="AndroidManifest.xml">
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
</config-file>
对我的config.xml
来说,它在构建时可以很好地添加到AndroidManifest.xml上,但仍然出现错误。
我尝试了here所述的两个标签uses-permission
和uses-permission-sdk
,但是没有运气。
我的cordova-android版本是6.2.3
我也尝试了cordova-plugin-permission,就像在deviceready监听器中一样:
var permissions = cordova.plugins.permissions;
permissions.requestPermission(
permissions.READ_CONTACTS,
function(success) {},
function(error) {}
);
permissions.requestPermission(
permissions.WRITE_CONTACTS,
function(success) {},
function(error) {}
);
但是什么都没有改变。该应用程序在触发“ deviceready”事件之前崩溃,因此我无法在运行时执行任何操作。
如here所述,如果我将targetSdkVersion更改为低于23(甚至25),则崩溃消失了,但是由于播放控制台不接受targetSdkVersion,我无法将其上传到Google Play上< 26。
此外,如果我通过应用设置手动授权了联系人访问权限,并且我强行停止并重新启动了该应用,则它可以正常工作。这让我发疯。
一些帮助,将不胜感激。
感谢所有花时间阅读或回答的人。
答案 0 :(得分:0)
我终于在cordova-android github中发布了一个问题。我很快得到了答案,即:
将cordova-android更新为7.1.4!