Android 安卓;不幸的是,MyApp已经停止了;

Android 安卓;不幸的是,MyApp已经停止了;,android,android-studio,Android,Android Studio,当我在我的设备上运行应用程序时,我收到此错误,应用程序崩溃 我正在使用Android Studio 1.3.2 这是我的堆栈跟踪: 08-06 13:26:35.980 8874-8889/com.test.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 Process: com.test.myapp, PID: 8874 java.lang.RuntimeException: An error occurred

当我在我的设备上运行应用程序时,我收到此错误,应用程序崩溃

我正在使用Android Studio 1.3.2

这是我的堆栈跟踪:

08-06 13:26:35.980    8874-8889/com.test.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    Process: com.test.myapp, PID: 8874
    java.lang.RuntimeException: An error occurred while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:309)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
            at java.util.concurrent.FutureTask.run(FutureTask.java:242)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
            at java.lang.Thread.run(Thread.java:818)
     Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.SemcContactsProvider2 from ProcessRecord{c94f2c4 8874:com.test.myapp/u0a60} (pid=8874, uid=10060) requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS
            at android.os.Parcel.readException(Parcel.java:1627)
            at android.os.Parcel.readException(Parcel.java:1579)
            at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:3565)
            at android.app.ActivityThread.acquireProvider(ActivityThread.java:4878)
            at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2004)
            at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1477)
            at android.content.ContentResolver.query(ContentResolver.java:481)
            at android.content.CursorLoader.loadInBackground(CursorLoader.java:64)
            at android.content.CursorLoader.loadInBackground(CursorLoader.java:42)
            at android.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:312)
            at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:69)
            at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:57)
            at android.os.AsyncTask$2.call(AsyncTask.java:295)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
            at java.lang.Thread.run(Thread.java:818)

如果要写联系人,也要写:

<uses-permission android:name="android.permission.WRITE_CONTACTS"/>


将这些行放入清单文件(直接在“清单”标记内)

在清单中添加权限

<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>


Android M+需要运行时权限

正如堆栈跟踪所说,您需要请求权限
需要android.permission.READ\u联系人或android.permission.WRITE\u联系人

把这个放在你的手上

<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>


请注意,如果您正在为android M+构建,您还应该在运行时请求权限。

您在android Manifests中没有授予联系人权限。在以后的问题中,您可能会发现包含一些代码来显示您正在尝试做的事,而不仅仅是堆栈跟踪,这很有用。只有堆栈跟踪可能不足以让我们进行调试。还请描述您已经尝试过的内容,以便我们可以更有效地提供帮助。
原因:java.lang.SecurityException:权限拒绝:从ProcessRecord{c94f2c4 8874:com.test.myapp/u0a60}(pid=8874,uid=10060)打开提供程序com.android.providers.contacts.Provider2需要android.permission.READ_CONTACTS或android.permission.WRITE_CONTACTS
您需要学习如何解释日志。
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>