Cordova-由于接触许可,Android应用在启动时崩溃

时间:2018-12-11 16:41:48

标签: android cordova android-permissions cordova-android

我遇到一个问题,找到了原因,但是我无法解决。

我的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-permissionuses-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。

此外,如果我通过应用设置手动授权了联系人访问权限,并且我强行停止并重新启动了该应用,则它可以正常工作。这让我发疯。

一些帮助,将不胜感激。

感谢所有花时间阅读或回答的人。

1 个答案:

答案 0 :(得分:0)

我终于在cordova-android github中发布了一个问题。我很快得到了答案,即:

将cordova-android更新为7.1.4!

https://github.com/apache/cordova-android/issues/606