设置铃声时出现意外错误

时间:2016-01-29 12:59:44

标签: android

我试图用我的应用设置铃声。为此,我需要在手机的外部存储器中写入声音。但每次我尝试这样做时都会收到此错误:

FATAL EXCEPTION: main
        Process: com.mtoy.tiboxinshape, PID: 26322
        java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/audio/media from pid=26322, uid=10211 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
        at android.os.Parcel.readException(Parcel.java:1620)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
        at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
        at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
        at android.content.ContentResolver.insert(ContentResolver.java:1231)
        at com.mtoy.tiboxinshape.SoundAdaptateur$2.onLongClick(SoundAdaptateur.java:142)
        at android.view.View.performLongClick(View.java:5243)
        at android.view.View$CheckForLongPress.run(View.java:21127)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5417)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我不明白为什么我仍然有这个错误,因为我在manifest.xml中有以下行:

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

您是否知道如何避免出现此错误?

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

Android已更改权限接受最新 23 API级别,在此过程中某些权限将在安装时自动授予,可以在Manifest中提及,剩余权限是在RunTime中接受,因为如此许多坏人试图通过这个安全漏洞收集用户的个人数据所以Android更改为运行时权限

有关运行时许可的更多信息和运行时允许接受的过程

在链接下方暂停

Every Android Developer must know about new Android's Runtime Permission