Cordova - 由于联系权限,Android 应用程序在启动时崩溃
Posted
技术标签:
【中文标题】Cordova - 由于联系权限,Android 应用程序在启动时崩溃【英文标题】:Cordova - android app crashes at launch due to contact permission 【发布时间】:2019-05-12 17:00:41 【问题描述】:我遇到了一个问题,我找到了原因,但我无法解决。
我的 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从 ProcessRecord6155964 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 但我仍然收到错误。
我尝试了uses-permission
和uses-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)
);
但没有任何改变。应用程序在“deviceready”事件触发之前崩溃了,所以我在运行时什么也做不了。
如here 所述,如果我将 targetSdkVersion 更改为低于 23(甚至 25),崩溃就会消失,但我无法再将其上传到 google play,因为游戏控制台不接受 targetSdkVersion
此外,如果我从应用设置手动授权联系人访问权限并强制停止并重新启动该应用,它就可以工作。这让我发疯了。
我们将不胜感激。
感谢任何愿意花时间阅读或回答的人。
【问题讨论】:
在实际授予权限之前,您不应该做任何需要这些权限的事情(大概是在调用success
函数时;我不熟悉那个库)。
是的,兄弟,但问题是在应用程序启动之前我实际上无法做任何事情。就像我没有选择控制台日志或任何东西一样。我根本无法访问除 logcat 之外的任何日志,因为该应用程序在我能够在开发人员工具的设备类别中看到该应用程序之前就崩溃了。在设备就绪事件cathcer中添加的所有内容都没有执行,因为应用程序之前崩溃了。
我从来没有说过这样的话,但是感谢您的有用评论。
【参考方案1】:
我终于在 cordova-android github 上发布了一个问题。我很快就得到了答案,那就是:
更新 cordova-android 到 7.1.4 !
https://github.com/apache/cordova-android/issues/606
【讨论】:
您是如何解决链接中提到的人行横道问题的? 为我的项目更新科尔多瓦问题很大,很多事情都失败了,有人知道如何在不更新科尔多瓦的情况下解决这个问题吗?有谁知道这个修复的科尔多瓦版本有什么变化?以上是关于Cordova - 由于联系权限,Android 应用程序在启动时崩溃的主要内容,如果未能解决你的问题,请参考以下文章
cordova android avd 访问 apache 服务器 xampp config.xml 权限