2017-04-12 86 views
0

我做了一個音樂播放器的應用程序。它在某些設備上運行正常,但在其他設備上崩潰。我無法理解錯誤。我如何解決它?我所知道的是第一個錯誤,那就是我必須單獨獲得讀取手機狀態權限的權限。應用程序不工作在所有設備

錯誤1:

java.lang.RuntimeException: Unable to create service beatbox.neelay.beatbox.MediaService: java.lang.SecurityException: Neither user 10103 nor current process has android.permission.READ_PHONE_STATE. 
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2804) 
at android.app.ActivityThread.access$1900(ActivityThread.java:154) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1404) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5292) 
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:904) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 
Caused by: java.lang.SecurityException: Neither user 10103 nor current process has android.permission.READ_PHONE_STATE. 
at android.os.Parcel.readException(Parcel.java:1546) 
at android.os.Parcel.readException(Parcel.java:1499) 
at com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy.listenForSubscriber(ITelephonyRegistry.java:544) 
at android.telephony.TelephonyManager.listen(TelephonyManager.java:2514) 
at beatbox.neelay.beatbox.MediaService.callStateListener(MediaService.java:612) 
at beatbox.neelay.beatbox.MediaService.onCreate(MediaService.java:126) 
at android.app.ActivityThread.handleCreateService(ActivityThread.java:2794) 
... 9 more 

這是由用戶提交的錯誤。

錯誤2:

Writing exception to parcel 
    java.lang.SecurityException: 
    External path: /storage/emulated/0/Android/data/com.android.providers.media/albumthumbs/1481126994678: Neither user 10199 nor current process has android.permission.WRITE_EXTERNAL_STORAGE. 
     at android.app.ContextImpl.enforce(ContextImpl.java:1443) 
     at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1475) 
     at android.content.ContextWrapper.enforceCallingOrSelfPermission(ContextWrapper.java:675) 
     at com.android.providers.media.MediaProvider.enforceCallingOrSelfPermissionAndAppOps(MediaProvider.java:6793) 
     at com.android.providers.media.MediaProvider.checkAccess(MediaProvider.java:5570) 
     at com.android.providers.media.MediaProvider.ensureFileExists(MediaProvider.java:4381) 
     at com.android.providers.media.MediaProvider.getAlbumArtOutputUri(MediaProvider.java:5834) 
     at com.android.providers.media.MediaProvider.makeThumbInternal(MediaProvider.java:5976) 
     at com.android.providers.media.MediaProvider.getThumb(MediaProvider.java:5897) 
     at com.android.providers.media.MediaProvider.openFile(MediaProvider.java:5466) 
     at android.content.ContentProvider.openAssetFile(ContentProvider.java:1427) 
     at android.content.ContentProvider.openTypedAssetFile(ContentProvider.java:1607) 
     at android.content.ContentProvider.openTypedAssetFile(ContentProvider.java:1673) 
     at android.content.ContentProvider$Transport.openTypedAssetFile(ContentProvider.java:430) 
     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:313) 
     at android.os.Binder.execTransact(Binder.java:458) 

我拿許可,允許在清單,並在Java中的Android米,我沒有使用的寫入外部存儲的任何功能,但隨後又其顯示的錯誤。

+0

請考慮檢查許可..安卓6>需要許可才能使用它們.. – ZeroOne

回答

2

在Android> = 6.0上,我們必須請求權限運行時。

第1步:添加AndroidManifest.xml文件

第2步:請求權限。

第3步:請求權限時處理回調。

檢查這一項:Permission at Run Time

編輯:我認爲你必須similar Issue:

+0

請參閱更新問題 –

+0

您是在談論錯誤2? – dhiku

+0

我沒有使用任何寫入外部存儲的功能,但我正在使用讀取存儲,如果你可以指導我的任何錯誤,它將幫助完整 –

0

你必須添加此權限

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


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

到AndroidManifest.xml文件

+0

看到更新的問題 –

1

這可能是因爲一些設備的運行Android 6.0或更高版本和其他人沒有。

https://developer.android.com/training/permissions/requesting.html

如果設備運行的是Android 5.1或更低,或應用程式的目標SDK是22或更低:如果您在清單中列出一個危險的權限,用戶必須在授予權限他們安裝應用程序;如果他們沒有授予權限,系統根本不會安裝該應用程序。

如果設備運行的是Android 6.0或更高版本,並且您的應用的目標SDK爲23或更高:應用必須列出清單中的權限,並且它必須在應用運行時請求所需的每個危險權限。用戶可以授予或拒絕每個權限,並且即使用戶拒絕權限請求,該應用也可以繼續以有限的功能運行。

+0

檢查更新問題該應用程序工作在一些Android M設備,但在一些Android L和M它正在崩潰 –

相關問題