SecurityException:Permission Denial:打开提供程序(致命异常:asynctask#3)

时间:2015-03-24 16:30:49

标签: android android-asynctask android-contentprovider

我正在构建一个Android库。在我开发它时,我将代码保持为正常的android项目,现在我将其转换为库项目(甚至创建了一个新的库项目并将所有代码复制到那里以确保)。该库基本上允许用户使用contentprovider将数据输入数据库,并且库返回从数据库查询的数据。因此,无论应用程序使用哪个库,都不需要使用contentprovider来访问数据,因为库可以完成所有操作。 我做了一个非常基本的应用程序,使用该库,我调用库时,应用程序崩溃,给出错误代码:

    FATAL EXCEPTION: AsyncTask #3
Process: com.example.testing, PID: 18991
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.SecurityException: Permission Denial: opening provider thesis.thesis.contentprovider.UsersDataContentProvider from ProcessRecord{42a51b18 18991:com.example.testing/u0a272} (pid=18991, uid=10272) that is not exported from uid 10266
at android.os.Parcel.readException(Parcel.java:1465)
at android.os.Parcel.readException(Parcel.java:1419)
at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:2917)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:4489)
at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2330)
at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1441)
at android.content.ContentResolver.query(ContentResolver.java:448)
at android.content.CursorLoader.loadInBackground(CursorLoader.java:65)
at android.content.CursorLoader.loadInBackground(CursorLoader.java:43)
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:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
... 3 more

我为testapp添加了权限,但没有更改错误

<uses-permission android:name="thesis.thesis.contentprovider.READ_DATABASE" />
<uses-permission android:name="thesis.thesis.contentprovider.WRITE_DATABASE" />

库清单中声明的​​提供程序:

<provider
        android:name="thesis.thesis.contentprovider.UsersDataContentProvider"
        android:authorities="thesis.thesis.contentprovider"
        android:exported="true"
        android:readPermission="thesis.thesis.contentprovider.READ_DATABASE"
        android:writePermission="thesis.thesis.contentprovider.WRITE_DATABASE" />

目前我已导出=&#34; true&#34;看看是不是问题而不是问题。后来我希望它被设置为false,因为数据是敏感的。

任何人都可以请我指出问题所在。还要询问是否需要其他信息。

0 个答案:

没有答案