Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从android URI获取绝对音频路径_Android_Audio_Android Mediaplayer_Absolute Path - Fatal编程技术网

如何从android URI获取绝对音频路径

如何从android URI获取绝对音频路径,android,audio,android-mediaplayer,absolute-path,Android,Audio,Android Mediaplayer,Absolute Path,Uri返回目录路径,我需要实现一个代码来获取音频文件并在MediaPlayer上播放该音频。我认为MediaPlayer需要绝对路径 Intent intent; intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT); intent.setType("audio/*"); startActivityForResult(Intent.createChooser(intent,"Sele

Uri返回目录路径,我需要实现一个代码来获取音频文件并在MediaPlayer上播放该音频。我认为MediaPlayer需要绝对路径

 Intent intent;
    intent = new Intent();
    intent.setAction(Intent.ACTION_GET_CONTENT);
    intent.setType("audio/*");
    startActivityForResult(Intent.createChooser(intent,"Select Audio"), 3);

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
    if((requestCode == 3) && (resultCode == RESULT_OK) && (data != null)){
            if ((data != null) && (data.getData() != null)){
                //this code returns content directory path
                String getAudioPath=data.getData().toString();

            }
        }
    };
Log:

09-22 14:55:50.361: E/AndroidRuntime(9396): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=3, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/audio:5260 flg=0x1 }} to activity {com.appwacky.irant/com.test.test.cameraApplication.VideoCapture_New}: java.lang.IllegalArgumentException: URI is not absolute: /document/audio:5260
09-22 14:55:50.361: E/AndroidRuntime(9396):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3432)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3475)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at android.app.ActivityThread.access$1300(ActivityThread.java:139)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at android.os.Handler.dispatchMessage(Handler.java:102)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at android.os.Looper.loop(Looper.java:136)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at android.app.ActivityThread.main(ActivityThread.java:5086)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at java.lang.reflect.Method.invokeNative(Native Method)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at java.lang.reflect.Method.invoke(Method.java:515)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at dalvik.system.NativeStart.main(Native Method)
09-22 14:55:50.361: E/AndroidRuntime(9396): Caused by: java.lang.IllegalArgumentException: URI is not absolute: /document/audio:5260
09-22 14:55:50.361: E/AndroidRuntime(9396):     at java.io.File.checkURI(File.java:220)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at java.io.File.<init>(File.java:177)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at com.test.test.cameraApplication.VideoCapture_New.onActivityResult(VideoCapture_New.java:513)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at android.app.Activity.dispatchActivityResult(Activity.java:5446)
09-22 14:55:50.361: E/AndroidRuntime(9396):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3428)
意图;
intent=新intent();
intent.setAction(intent.ACTION\u GET\u CONTENT);
intent.setType(“音频/*”);
startActivityForResult(Intent.createChooser(Intent,“选择音频”),3);
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
//TODO自动生成的方法存根
super.onActivityResult(请求代码、结果代码、数据);
if((requestCode==3)&&(resultCode==RESULT_OK)&&(data!=null)){
if((data!=null)&&(data.getData()!=null)){
//此代码返回内容目录路径
字符串getAudioPath=data.getData().toString();
}
}
};
日志:
09-22 14:55:50.361:E/AndroidRuntime(9396):java.lang.RuntimeException:未能传递结果ResultInfo{who=null,request=3,result=-1,data=Intent{dat=content://com.android.providers.media.documents/document/audio:5260 flg=0x1}}到活动{com.appwacky.irant/com.test.test.cameraApplication.VideoCapture_New}:java.lang.IllegalArgumentException:URI不是绝对的:/document/audio:5260
09-22 14:55:50.361:E/AndroidRuntime(9396):在android.app.ActivityThread.deliverResults(ActivityThread.java:3432)
09-22 14:55:50.361:E/AndroidRuntime(9396):在android.app.ActivityThread.handleSendResult(ActivityThread.java:3475)上
09-22 14:55:50.361:E/AndroidRuntime(9396):在android.app.ActivityThread.access$1300(ActivityThread.java:139)
09-22 14:55:50.361:E/AndroidRuntime(9396):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258)
09-22 14:55:50.361:E/AndroidRuntime(9396):在android.os.Handler.dispatchMessage(Handler.java:102)上
09-22 14:55:50.361:E/AndroidRuntime(9396):在android.os.Looper.loop(Looper.java:136)上
09-22 14:55:50.361:E/AndroidRuntime(9396):位于android.app.ActivityThread.main(ActivityThread.java:5086)
09-22 14:55:50.361:E/AndroidRuntime(9396):位于java.lang.reflect.Method.Invokenactive(本机方法)
09-22 14:55:50.361:E/AndroidRuntime(9396):位于java.lang.reflect.Method.invoke(Method.java:515)
09-22 14:55:50.361:E/AndroidRuntime(9396):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-22 14:55:50.361:E/AndroidRuntime(9396):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
9-22 14:55:50.361:E/AndroidRuntime(9396):在dalvik.system.NativeStart.main(本机方法)
09-22 14:55:50.361:E/AndroidRuntime(9396):由以下原因引起:java.lang.IllegalArgumentException:URI不是绝对的:/document/audio:5260
09-22 14:55:50.361:E/AndroidRuntime(9396):位于java.io.File.checkURI(File.java:220)
09-22 14:55:50.361:E/AndroidRuntime(9396):位于java.io.File.(File.java:177)
09-22 14:55:50.361:E/AndroidRuntime(9396):在com.test.test.cameraApplication.VideoCapture_New.onActivityResult(VideoCapture_New.java:513)
09-22 14:55:50.361:E/AndroidRuntime(9396):在android.app.Activity.dispatchActivityResult(Activity.java:5446)上
09-22 14:55:50.361:E/AndroidRuntime(9396):在android.app.ActivityThread.deliverResults(ActivityThread.java:3428)
//write to use this 
String getAudioPath=data.getData().getPath().toString();

//instead of 

 String getAudioPath=data.getData().toString();