Android"不幸的是,MyApp已停止"

时间:2016-08-06 10:34:48

标签: android android-studio

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

我使用的是Android Studio 1.3.2。

这是我的Stack Trace:

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)

3 个答案:

答案 0 :(得分:0)

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

如果你想写一个联系人,也要写:

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

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

答案 1 :(得分:0)

在清单中添加权限

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

Android M +需要运行时权限implement like this code

答案 2 :(得分:0)

如堆栈跟踪所示,您需要请求权限。 requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS

把它放在你的表现中

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

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

相关问题