如何从Android Nougat中的内部或外部存储获取绝对文件路径

时间:2018-02-25 15:06:55

标签: android

我正在尝试按下按钮时浏览文件,当选择文件时,我打印绝对路径的吐司。 以下是我的代码

 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来访问绝对路径。 我已经在清单文件中写了所需的权限。

0 个答案:

没有答案