大佬教程收集整理的这篇文章主要介绍了Android读取外部存储提供securityException,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public ArrayList<Track> getAllSongsFromSDCARD() { allTracks = new ArrayList<Track>(); String[] STAR = { "*" }; Uri allsongsuri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; cursor cursor = mContext.getApplicationContext().getContentResolver().query(allsongsuri,STAR,SELEction,null,null); if (cursor != null) { if (cursor.moveToFirst()) { do { String song_name = cursor .getString(cursor .get@R_489_8620@nIndex(MediaStore.Audio.Media.DISPLAY_Name)); int song_id = cursor.geTint(cursor .get@R_489_8620@nIndex(MediaStore.Audio.Media._ID)); String fullpath = cursor.getString(cursor .get@R_489_8620@nIndex(MediaStore.Audio.Media.DATA)); String album_name = cursor.getString(cursor .get@R_489_8620@nIndex(MediaStore.Audio.Media.ALBUM)); int album_id = cursor.geTint(cursor .get@R_489_8620@nIndex(MediaStore.Audio.Media.ALBUM_ID)); String artist_name = cursor.getString(cursor .get@R_489_8620@nIndex(MediaStore.Audio.Media.ARTIST)); int artist_id = cursor.geTint(cursor .get@R_489_8620@nIndex(MediaStore.Audio.Media.ARTIST_ID)); String duration = cursor.getString(cursor.get@R_489_8620@nIndex(MediaStore.Audio.Media.DURATION)); int[] splitTime = null; String hours,minutes,seconds,formattedTime; try{ splitTime = splitToComponentTimes(Bigdecimal.valueOf(Long.valueOf(duration)/1000)); hours = String.valueOf(splitTime[0]); minutes = String.valueOf(splitTime[1]); seconds = String.valueOf(splitTime[2]); if(hours.equals("0")){ formattedTime = minutes + ":" + seconds; }else{ formattedTime = hours + ":" + minutes + ":" + seconds; } }catch (Exception E){ formattedTime = "00:00"; } allTracks.add(new Track(song_name,song_id,fullpath,album_name,album_id,artist_name,artist_id,formattedTimE)); } while (cursor.moveToNext()); } sortTracksAlphabetically(allTracks); cursor.close(); } return allTracks; }
我的清单中有以下权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
当我在Android版本4.3的设备上运行该代码时,它工作正常.但是,当我在Android版本5.0.2的设备上运行它时,它给出了
谁能告诉我为什么?这是完整的堆栈跟踪:
02-14 19:25:52.812 5701-5701/com.yrazlik.musicplayer E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.yrazlik.musicplayer,PID: 5701 java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media from pid=5701,uid=10054 requires android.permission.READ_EXTERNAL_STORAGE,or grantUriPermission() at android.os.Parcel.readException(Parcel.java:1540) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185) at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137) at android.content.ContentProviderProxy.query(ContentProviderNative.java:420) at android.content.ContentResolver.query(ContentResolver.java:478) at android.content.ContentResolver.query(ContentResolver.java:422) at com.yrazlik.musicplayer.dialogs.AllSongsDialog.getAllSongsFromSDCARD(AllSongsDialog.java:74) at com.yrazlik.musicplayer.dialogs.AllSongsDialog.onCreate(AllSongsDialog.java:59) at android.app.Dialog.dispatchOnCreate(Dialog.java:373) at android.app.Dialog.show(Dialog.java:274) at com.yrazlik.musicplayer.fragments.PlaylistFragment$1.onClick(PlaylistFragment.java:86) at android.view.View.performClick(View.java:4756) at android.view.View$PerformClick.run(View.java:19749) at android.os.Handler.handleCallBACk(Handler.java:739) at android.os.Handler.dispatchmessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
谢谢.
以上是大佬教程为你收集整理的Android读取外部存储提供securityException全部内容,希望文章能够帮你解决Android读取外部存储提供securityException所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。