Android 2.2를 실행하는 여러 사용자로부터 다음 오류 보고서를 받았습니다. 나는 그것을 국부적으로 재현 할 수 없다.MediaController가 java.lang.SecurityException : Permission Denial을 야기 함
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로 간단한 VideoView를 만들고 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();
}
내 코드 설정을 변경하려고 시도해서는 안 ** * * 스택 추적 코드가 다르기 때문에 코드를 표시하십시오. – Blundell
코드를 추가하기 위해 질문을 편집했습니다. 시스템 설정을 변경하려면 특정 설정 클래스를 사용해야한다고 생각했을 것입니다. –
이 모양은 ZTE V9 장치에서만 발생합니다. 그들은 이상한 사용자 정의 코드를 추가해야합니다. –