工作时遇到一个问题,我在VideoActivty中找到一个视频文件,启动Gallery3D中的MovieView来进行播放,然后在MovieView端得到此文件的路径。我当时传进了一个:
String mpath = "/mnt/sdcard/叶问2.mp4";
的路径,其中文件名是中文的。然后我在MovieView中得到的文件名竟然是乱码,最开始我是这么处理的:
VideoActivty处的代码大致为:
String mpath = "/mnt/sdcard/叶问2.mp4"; String type = "video"; File f = new File(mpath); Uri uri = Uri.fromFile(f); Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(android.content.Intent.ACTION_VIEW); intent.setDataAndType(uri, type); this.startActivity(intent);
MovieView处理时用了异想天开的转码方式:
path = new String(mUri.toString().getBytes("utf-8"), "GBK");
其实URI已经考虑到了这种情况。琢磨后用了这种方式得到了中文路径。
Intent intent2 = getIntent(); Uri mUri = intent2.getData(); String path = intent2.getDataString(); path = Uri.decode(path).substring(7, path.length()); android.util.Log.d("URI", "path is " + path);
Uri.decode函数Google已经帮我们实现好了。只是我这个码农没有发现。。。。。。记录于此,供后来人参考。