获取“致命异常 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 发送意图

TypeError:无法提取-Javascript Asyn问题

asyn_fifo

c_cpp cpp_asyn_callback.cpp