我正在尝试按下按钮时浏览文件,当选择文件时,我打印绝对路径的吐司。 以下是我的代码
browse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
radioGroup.clearCheck();
//Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("audio/*");
startActivityForResult(intent,7);
}
});
以下是onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode,resultCode,data);
switch (requestCode) {
case 7:
if (resultCode == RESULT_OK) {
Uri uri = null ;
if (data !=null){
uri = data.getData(); //= data.getData();
try {
String mimeType = getContentResolver().getType(uri);
String path = cls2.getRealPath(this, uri);
Toast.makeText(MainActivity.this, (CharSequence) path, Toast.LENGTH_LONG).show();
break;
}catch(Exception e)
{
Log.e("Exception found ",e.getMessage());
}
}
}
}
}
其中cls2.getRealPath()
即
RealPathUtil cls2 = new RealPathUtil();
getRealPath方法和我从以下链接获得的RealPathUtil类
https://gist.github.com/tatocaster/32aad15f6e0c50311626
上面的代码完全适用于Android Lollipop,但是当我在Android Nougat中运行上面的代码时,我没有任何路径。可能是什么原因,Nougat有不同的API来访问绝对路径。 我已经在清单文件中写了所需的权限。