Android MediaController导致java.lang.SecurityException:权限拒绝
我从几个运行Android2.2的不同用户那里收到了以下错误报告。我无法在本地复制它Android MediaController导致java.lang.SecurityException:权限拒绝,android,permissions,android-videoview,securityexception,mediacontroller,Android,Permissions,Android Videoview,Securityexception,Mediacontroller,我从几个运行Android2.2的不同用户那里收到了以下错误报告。我无法在本地复制它 java.lang.SecurityException: Permission Denial: writing com.android.providers.settings.SettingsProvider uri content://settings/system from pid=15121, uid=10063 requires android.permission.WRITE_SETTINGS
java.lang.SecurityException: Permission Denial: writing com.android.providers.settings.SettingsProvider uri content://settings/system from pid=15121, uid=10063 requires android.permission.WRITE_SETTINGS
at android.os.Parcel.readException(Parcel.java:1247)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
at android.content.ContentProviderProxy.insert(ContentProviderNative.java:408)
at android.content.ContentResolver.insert(ContentResolver.java:587)
at android.provider.Settings$NameValueTable.putString(Settings.java:556)
at android.provider.Settings$System.putString(Settings.java:753)
at android.provider.Settings$System.putInt(Settings.java:836)
at android.widget.MediaController.dolbySwitch(MediaController.java:835)
at android.widget.MediaController.access$1100(MediaController.java:89)
at android.widget.MediaController$6.onClick(MediaController.java:763)
at android.view.View.performClick(View.java:2408)
at android.view.View$PerformClick.run(View.java:8816)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4669)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
at dalvik.system.NativeStart.main(Native Method)
我的代码不应该试图更改任何设置——我只是用MediaController创建了一个简单的视频视图,并让它加载一个URI
这个错误似乎非常罕见,所以这不是一个大问题,但我不知道是什么导致了它
编辑:根据请求,以下是VideoView&MediaController的代码:
private void videoViewInit()
{
videoView = (VideoView)findViewById(R.id.videoView);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
mediaController.setMediaPlayer(videoView);
videoView.setMediaController(mediaController);
videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int errorType, int extra) {
return false;
}});
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp) {
videoView.requestFocus();
}});
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
}});
}
protected void videoViewDisable() {
videoView.stopPlayback();
}
private void videoViewLoad(Uri uri) {
if( uri == null || uri.toString().equals("") )
return;
if( videoView == null )
videoViewInit();
videoView.setVideoURI( uri );
videoView.start();
}
将此权限添加到清单文件
< uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
<使用权限android:name=“android.permission.WRITE\u设置”>
My code不应试图更改任何设置,因为堆栈跟踪显示不同:-)编辑问题以添加代码。我认为您需要使用一些特定的设置类来更改系统设置。看起来这只发生在中兴V9设备上。他们一定添加了一些奇怪的自定义代码。我抛出了一个类似的异常,我的应用程序也没有尝试更改设置。然而,所讨论的设备是运行安卓1.5的三星GT-I5700。关于谷歌安卓开发者小组,我的问题是:谢谢,不过如果可能的话,我更愿意在没有额外许可的情况下这样做,因为我不知道有什么系统设置我真的想更改。如果有人问,很难解释允许的原因。