前言
無(wú)意中遇到調(diào)用外部的 ContentProvider
報(bào) java.lang.SecurityException: Permission Denial: opening provider
錯(cuò)誤切厘, 記錄一下解決方法铝耻。
本博客同步發(fā)布于XueLong的博客
錯(cuò)誤原因及解決方法
報(bào)錯(cuò)日志
Process: online.himakeit.testcontentprovider, PID: 6668
java.lang.SecurityException: Permission Denial: opening provider
online.himakeit.skylarkdemo.provider.DBSQLProvider from ProcessRecord{7dc9495 6668:online.himakeit.testcontentprovider/u0a93}
(pid=6668, uid=10093) that is not exported from UID 10094
at android.os.Parcel.readException(Parcel.java:1942)
at android.os.Parcel.readException(Parcel.java:1888)
at android.app.IActivityManager$Stub$Proxy.getContentProvider(IActivityManager.java:4771)
at android.app.ActivityThread.acquireProvider(ActivityThread.java:5882)
at android.app.ContextImpl$ApplicationContentResolver.acquireProvider(ContextImpl.java:2479)
at android.content.ContentResolver.acquireProvider(ContentResolver.java:1733)
at android.content.ContentResolver.insert(ContentResolver.java:1533)
at online.himakeit.testcontentprovider.MainActivity.onClick(MainActivity.java:53)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24697)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
產(chǎn)生 java.lang.SecurityException: Permission Denial: opening provider
錯(cuò)誤的原因是,外部的 ContentProvider
不能被外部所調(diào)用。
解決方式就是在定義 ContentProvider
時(shí)在 <provider>
標(biāo)簽下添加 android:exported="true"
屬性,并將其值設(shè)為 true
。
android:exported
主要作用是:是否支持其他應(yīng)用調(diào)用當(dāng)前組件Android
中的四大組件Activity
、Service
、ContentProvider
懊烤、BroadcastReceiver
都有android:exported
這個(gè)屬性
寫(xiě)在最后
以上就是如何解決java.lang.SecurityException: Permission Denial: opening provider
問(wèn)題。
如果你在參考過(guò)程中遇到問(wèn)題宽堆,可以在我的聯(lián)系方式中給我提問(wèn)腌紧。
后面會(huì)繼續(xù)介紹,Android的相關(guān)知識(shí)畜隶,歡迎繼續(xù)關(guān)注我博客的更新壁肋。
轉(zhuǎn)載請(qǐng)注明:XueLong的博客 ? Android調(diào)用外部ContentProvider失敗