2017-04-12 44 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它正在崩溃 –

相关问题