Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
Java 我正在android 11上实现文件选择器,当我使用uri.getPath()获取路径时,它的形式是/文件/msf:1334“;_Java_Android - Fatal编程技术网

Java 我正在android 11上实现文件选择器,当我使用uri.getPath()获取路径时,它的形式是/文件/msf:1334“;

Java 我正在android 11上实现文件选择器,当我使用uri.getPath()获取路径时,它的形式是/文件/msf:1334“;,java,android,Java,Android,从uri检索路径时,我以“/document/msf:1334”的形式获取路径,因此无法访问所选文件 @Override public void onActivityResult(int requestCode, int resultCode, Intent resultData) { super.onActivityResult(requestCode, resultCode, resultData); if (requestCode == PICK_PDF_FILE

从uri检索路径时,我以“/document/msf:1334”的形式获取路径,因此无法访问所选文件

@Override
public void onActivityResult(int requestCode, int resultCode,
    Intent resultData) {
    super.onActivityResult(requestCode, resultCode, resultData);
    if (requestCode == PICK_PDF_FILE &&
        resultCode == Activity.RESULT_OK) {
        // The result data contains a URI for the document or directory that
        // the user selected.
        Uri uri = null;
        if (resultData != null) {
            uri = resultData.getData();
            Log.e("Error!llllllllll", "nullll  " + uri.getPath());
            // String path = getRealPathFromURI(s_activity,uri);
            //Log.e( "Error!llllllllll", "nullll  "+path);

            //fileUri = data != null ? data.getData() : null;
            if (uri != null) {
                DocumentFile d = DocumentFile.fromSingleUri(this, uri);
                if (d != null) {
                    Log.e("TAG", "file name: " + d.getName());
                    Log.e("TAG", "file path: " + d.getUri().getPath());

                }
            }
        }
    }
}

在清单中添加权限:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
        tools:ignore="ScopedStorage" />
    private void requestPermission() {
        if (SDK_INT >= Build.VERSION_CODES.R) {
            try {
                Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
                intent.addCategory("android.intent.category.DEFAULT");
                intent.setData(Uri.parse(String.format("package:%s", getApplicationContext().getPackageName())));
                startActivityForResult(intent, 2296);
            } catch (Exception e) {
            }
}
checkPermission()
if (!Environment.isExternalStorageManager()) 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
}
检查对存储的访问:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
        tools:ignore="ScopedStorage" />
    private void requestPermission() {
        if (SDK_INT >= Build.VERSION_CODES.R) {
            try {
                Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
                intent.addCategory("android.intent.category.DEFAULT");
                intent.setData(Uri.parse(String.format("package:%s", getApplicationContext().getPackageName())));
                startActivityForResult(intent, 2296);
            } catch (Exception e) {
            }
}
checkPermission()
if (!Environment.isExternalStorageManager()) 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
}
通过以下方法处理用户的权限访问:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
        tools:ignore="ScopedStorage" />
    private void requestPermission() {
        if (SDK_INT >= Build.VERSION_CODES.R) {
            try {
                Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
                intent.addCategory("android.intent.category.DEFAULT");
                intent.setData(Uri.parse(String.format("package:%s", getApplicationContext().getPackageName())));
                startActivityForResult(intent, 2296);
            } catch (Exception e) {
            }
}
checkPermission()
if (!Environment.isExternalStorageManager()) 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
}

我希望有帮助

谢谢大家,我将执行上述操作,您使用哪种操作来实现已使用的意图?当然,用户可以浏览到下载文件夹并在那里选择一个文件。您的代码没有意义。我正在使用Intent Intent=newintent(Intent.ACTION\u OPEN\u文档);那么我重复一遍:
当然用户可以浏览到下载文件夹并在那里选择一个文件是,但我得到的路径是“/document/msf:1334”,这对我从下载中导入文件是没有用的。然后更改你文章的主题。你会得到一个uri。并告诉您要将文件导入的位置。