安卓"Unfortunately, MyApp Has Stopped"



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

我使用的是安卓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.READ_CONTACTS"/>

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

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

将这些行放入清单文件(直接在"manifest"标记内(

在清单中添加权限

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

Android M+需要运行时权限实现,如以下代码

正如堆栈跟踪所说,您需要请求权限。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+构建的,你也应该在运行时请求权限。

相关内容

最新更新