获取“致命异常 AsyncTask #1”
Posted
技术标签:
【中文标题】获取“致命异常 AsyncTask #1”【英文标题】:Getting "FATAL EXCEPTION AsyncTask #1" 【发布时间】:2016-11-12 23:29:22 【问题描述】:在 android 中运行我的应用程序时出现以下错误。我没有任何后台任务正在进行。
致命异常:AsyncTask #1
进程:com.inclov.inclovapp,PID:32532 java.lang.RuntimeException:执行时发生错误 doInBackground() 在 android.os.AsyncTask$3.done(AsyncTask.java:304) 在 java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 在 java.util.concurrent.FutureTask.setException(FutureTask.java:222) 在 java.util.concurrent.FutureTask.run(FutureTask.java:242) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 在 java.lang.Thread.run(Thread.java:818)
原因:java.lang.SecurityException: Permission Denial: opening 提供者 com.android.providers.contacts.ContactsProvider2 来自 ProcessRecord2363bbc5 32532:com.inclov.inclovapp/u0a161 (pid=32532, uid=10161) 需要 android.permission.READ_CONTACTS 或 android.permission.WRITE_CONTACTS 在 android.os.Parcel.readException(Parcel.java:1546) 在 android.os.Parcel.readException(Parcel.java:1499) 在 android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:3503) 在 android.app.ActivityThread.acquireProvider(ActivityThread.java:5062) 在 android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2737) 在 android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1446) 在 android.content.ContentResolver.query(ContentResolver.java:466) 在 android.content.CursorLoader.loadInBackground(CursorLoader.java:64) 在 android.content.CursorLoader.loadInBackground(CursorLoader.java:42) 在 android.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:312) 在 android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:69) 在 android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:57) 在 android.os.AsyncTask$2.call(AsyncTask.java:292) 在 java.util.concurrent.FutureTask.run(FutureTask.java:237) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 在 java.lang.Thread.run(Thread.java:818)
【问题讨论】:
它说你错过了 android.permission.READ_CONTACTS 或 android.permission.WRITE_CONTACTS 权限。请在清单中添加这些权限,然后重试 首先完全通过你的 logcat。它清楚地表明需要 android.permission.READ_CONTACTS 或 android.permission.WRITE_CONTACTS 【参考方案1】:将这些添加到您的清单中:
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
阅读本文了解更多信息 - https://developer.android.com/training/contacts-provider/retrieve-names.html#Permissions
【讨论】:
【参考方案2】:如错误中所述,您需要这些权限:
android.permission.READ_CONTACTS
或
android.permission.WRITE_CONTACTS
对于棒棒糖和之前的产品,您需要将其添加到您的清单中:
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
如果您的目标是 Marshmallow,您需要使用它在 Activity 中添加请求权限逻辑。关注这个官方Link 了解如何操作。
【讨论】:
以上是关于获取“致命异常 AsyncTask #1”的主要内容,如果未能解决你的问题,请参考以下文章
AndroidRuntime:致命异常:AsyncTask #1 进程
致命异常:AsyncTask #1 java.lang.RuntimeException:执行 doInBackground() 时发生错误
通过(From)AsyncTask 向 MainActivity 发送意图