android - Cordova - 由于联系人许可,Android 应用程序在启动时崩溃

标签 android cordova android-permissions cordova-android

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

我的 cordova 应用程序在 android 8.0.0 上崩溃。我做了一个 logcat,显示该应用程序正在尝试访问联系人。

奇怪的是我没有联系人插件,也没有在我的应用程序中使用联系人。

在 logcat 上,我有这个错误:

12-11 17:29:42.094 E/AndroidRuntime( 5609): java.lang.RuntimeException: java.lang.RuntimeException: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.ContactsProvider2 from ProcessRecord{6155964 5609:com.pierrickmartelliere.UPHAIRR/u0a210} (pid=5609, uid=10210) requires android.permission.READ_CONTACTS or 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 上,但我仍然遇到错误。

我尝试了两个标签 uses-permissionuses-permission-sdk如所述here但没有运气。

我的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) {}
    );

但是什么都没有改变。应用程序在“设备就绪”事件被触发之前崩溃,所以我在运行时什么也做不了。

如前所述here ,如果我将 targetSdkVersion 更改为低于 23(甚至 25),崩溃就会消失,但我无法再将其上传到 google play,因为 play console 不接受 targetSdkVersion < 26。

此外,如果我从应用程序设置中手动授权联系人访问并强制停止并重新启动该应用程序,它会起作用。这让我发疯。

在此方面的一些帮助将不胜感激。

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

最佳答案

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

更新 cordova-android 到 7.1.4 !

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

关于android - Cordova - 由于联系人许可,Android 应用程序在启动时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53728634/

相关文章:

javascript - iframe 的安全错误

Android - WRITE_EXTERNAL_STORAGE 权限和写入应用程序日志

java - 如何从 Java 更改 Android GoogleMap 上的选项?

android - 添加 Eclipse "Android Library"项目并通过 Maven 构建

javascript - 如何使用 javascript 在黑莓操作系统 5.0 中创建数据库

javascript - Phonegap - 将图像从 url 保存到设备照片库中

android - Google Play 表示我的设备不支持我的应用

Android O 无法接收广播 Intent.ACTION_NEW_OUTGOING_CALL

android - 在 recyclerView 之间共享项目列表

android - 处理 Android 系统托盘中已关闭的 Firebase 通知