小编Jul*_*s B的帖子

将 uri 保存到 sharedPreferences 并使用 mediaplayer 播放

这是我用来将 Uri 的字符串表示形式保存到 SharedPreferences 的代码:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQ_CODE_PICK_SOUNDFILE && resultCode == Activity.RESULT_OK){
        if ((data != null) && (data.getData() != null)){
            SharedPreferences sharedPref = getSharedPreferences("customName", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPref.edit();
            editor.putString("uritostring", data.getData().toString());
            editor.apply();

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,当我在此处附加以下两个中的任何一个时,它都可以正常工作:

MediaPlayer mp=MediaPlayer.create(this,data.getData());

MediaPlayer mp=MediaPlayer.create(this,Uri.parse(data.getData().toString()));
Run Code Online (Sandbox Code Playgroud)

但是,当我稍后在这样的另一个活动中尝试创建 MediaPlayer 时,它不起作用:

SharedPreferences sharedPref = getSharedPreferences("customName", Context.MODE_PRIVATE);
Uri uri = Uri.parse(sharedPref.getString("uritostring","defaultUriString"));
mp.create(this,uri);
Run Code Online (Sandbox Code Playgroud)

我不知道保存和加载到 sharedPreferences 可以合理地产生什么区别。据我所知,从调试来看uri与上面的Uri.parse(data.getData().toString())的结果相同。

非常感谢任何帮助和指示。

此致

尤利乌斯

编辑:

我以为我通过MediaPlayer.create()使用 …

android uri sharedpreferences android-mediaplayer

7
推荐指数
1
解决办法
2028
查看次数