0

先日、開発者コンソールにこのエラーが表示されましたが、問題がわかりません。

mp3プロジェクトの raw フォルダーにあるファイルを再生しようとしています。

MediaPlayer player = new MediaPlayer();
            try {
                player.setAudioStreamType(AudioManager.STREAM_RING);
                Uri uri = Uri.parse(pref.getString(Preferences.CONN_TONE,""));
                if(uri != null){
                    player.setDataSource(this, uri);
                }else{
                    player = MediaPlayer.create(this, R.raw.default_tone); //error here
                }

                player.prepare();
            }

この行で、mp3 ファイルを再生するために int リソースを指定しているときに、なぜ文字列例外がスローされるのかplayer = MediaPlayer.create(this, R.raw.default_tone);というエラーが表示されます。StringIndexOutOfBoundsExceptionまた、このユーザーにエラーがスローされるのはなぜですか。

スタックトレース

java.lang.RuntimeException: Unable to start activity ComponentInfo{ecm2.android/ecm2.android.Dialogs.MessageBox}: java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=7
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2351)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$600(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1331)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:155)
at android.app.ActivityThread.main(ActivityThread.java:5454)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=7
at java.lang.String.startEndAndLength(String.java:593)
at java.lang.String.substring(String.java:1474)
at android.media.MediaPlayer.isStreaming(MediaPlayer.java:3847)
at android.media.MediaPlayer.isNeedAddProxyInfo(MediaPlayer.java:3856)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1103)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1031)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1002)
at ecm2.android.Dialogs.MessageBox.playTone(MessageBox.java:75)
at ecm2.android.Dialogs.MessageBox.onCreate(MessageBox.java:43)
at android.app.Activity.performCreate(Activity.java:5066)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
4

1 に答える 1

1

Preferences.CONN_TONEが設定されていること、またはデフォルト値がアプリにあるデフォルトの mp3 ファイルを指していることを確認してください。に "" を渡すことによって無効な Uri が作成されていると推測されます。これにより、おそらく無効な Uri を使用して が呼び出されUri.parse()たときに、例外が発生します。MediaPlayer.create()

于 2013-08-02T15:37:09.440 に答える