Java 我正在android 11上实现文件选择器,当我使用uri.getPath()获取路径时,它的形式是/文件/msf:1334“;
从uri检索路径时,我以“/document/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
@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。并告诉您要将文件导入的位置。