2013-03-05 7 views
5

'a erişirken SecurityException'den kaçının Resim mime tipleriyle android.intent.action.SEND nolu niyet filtresine sahip bir etkinliğim var. kullanıcı giriş iseDownloadProvider

kullanıcı hisseleri kez

resmi (özellikle indirme yöneticisinden itibaren) Etkinliğime (UploadActivity) ile, etkinlik kontrol edecektir. bu (EXTRA_STREAM birlikte) orijinal niyet saklayacaktır Değilse ve kullanıcıyı LoginActivity'ye gönderin. Bu kullanıcı giriş yaptıktan sonra, ilk kaydedilen niyetle UploadActiviteye geri getirilecek.

Şimdi, özgün amacı geri yükledikten sonra bile, bir java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadProvider uri... olsun.

Bunu neden anladığımı anlıyorum. Çünkü asıl niyetin geçici izni yok.

Düzenleme: LogCat

FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.UploadActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadProvider uri content://downloads/all_downloads/1145 from pid=16585, uid=10086 requires android.permission.ACCESS_ALL_DOWNLOADS, or grantUriPermission() 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
    at android.app.ActivityThread.access$600(ActivityThread.java:141) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:5041) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.downloads.DownloadProvider uri content://downloads/all_downloads/1145 from pid=16585, uid=10086 requires android.permission.ACCESS_ALL_DOWNLOADS, or grantUriPermission() 
    at android.os.Parcel.readException(Parcel.java:1425) 
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185) 
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137) 
    at android.content.ContentProviderProxy.query(ContentProviderNative.java:366) 
    at android.content.ContentResolver.query(ContentResolver.java:372) 
    at android.content.ContentResolver.query(ContentResolver.java:315) 
    at com.example.UploadActivity.getFileFromContentUri(UploadActivity.java:304) 
    at com.example.UploadActivity.onCreate(UploadActivity.java:195) 
    at android.app.Activity.performCreate(Activity.java:5104) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
    ... 11 more 
+0

Lütfen LogCat hatalarının tümünü gönderin. Kesin olmak için, INTERNET'in iznine sahip misiniz? – Sam

+0

Orijinal yayın güncellendi. Evet "INTERNET" iznim var. Sahip olduğum tek izin bu. – ademers

+0

@AWebDevDuh: "android.permission.ACCESS_ALL_DOWNLOADS" iznini de eklediniz mi? –

cevap

0

ContentProvider sorgulamak için tam Kodunu gönderin. Benzer bir sorunum vardı. i

çalıştığını
String[] proj=new String[] { 
       MediaStore.MediaColumns.DATA, 
       MediaStore.MediaColumns.DISPLAY_NAME, 
     }; 
c=MyApplication.getAppContext().getContentResolver().query(uri,proj,null,null,null); 

için projeksiyon set ancak zaman

c=MyApplication.getAppContext().getContentResolver().query(uri,null,null,null,null); 

: bir imleç çağrılırken. Projeksiyona MediaStore.MediaColumns.MIME_TYPE eklediğimde, yine başarısız oluyor. Bana öyle geliyor ki, sağlayıcı bu (ve belki başka bir) sütuna erişim izni vermiyor.

+0

Bunu bir süredir test ettikten sonra, bu sadece bir ilk adımdır. MediaStore.MediaColumns.MIME_TYPE mimeType ile sürekli olarak İstisnalar alırım, ancak onsuz zaman zaman hala SecurityExceptions alırım. Belki bir süre sonra izin iptal edildi mi? Hata ayıklama modunda oturduğumda, bir sonraki sorguda bir istisna daha olası gibi görünüyor. Çalışmak için "ACTION_SEND" semminden tek bir Uri'yi istemek, ancak "ACTION_SEND_MULTIPLE" dan birden fazla Uris'i sorgulamak için bazen zaman zaman bazı sorunlara neden oluyor. –

+0

Aynı tökezleme bloğunu vurabilirim - bazen içerik akışına erişebilirim, diğer zamanlarda SecurityException, özdeş dosya vb. Alabilirim. Bu konu hakkında daha fazla bilgi aldınız mı? – gregko