1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android 获取文件uri Android:从内容URI获取文件URI?

android 获取文件uri Android:从内容URI获取文件URI?

时间:2024-05-25 00:52:26

相关推荐

android 获取文件uri Android:从内容URI获取文件URI?

如果你有一个file:///的内容Uri,你可以使用此方法获取Android 19或更高版本的文件夹或文件的绝对路径。

public static String getPath(final Context context, final Uri uri) {

final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;

// DocumentProvider

if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {

System.out.println("getPath() uri: " + uri.toString());

System.out.println("getPath() uri authority: " + uri.getAuthority());

System.out.println("getPath() uri path: " + uri.getPath());

// ExternalStorageProvider

if ("com.android.externalstorage.documents".equals(uri.getAuthority())) {

final String docId = DocumentsContract.getDocumentId(uri);

final String[] split = docId.split(":");

final String type = split[0];

System.out.println("getPath() docId: " + docId + ", split: " + split.length + ", type: " + type);

// This is for checking Main Memory

if ("primary".equalsIgnoreCase(type)) {

if (split.length > 1) {

return Environment.getExternalStorageDirectory() + "/" + split[1] + "/";

} else {

return Environment.getExternalStorageDirectory() + "/";

}

// This is for checking SD Card

} else {

return "storage" + "/" + docId.replace(":", "/");

}

}

}

return null;

}

您可以检查Uri的每个部分是否使用println。 下面列出了SD卡和设备主存储器的返回值。 您可以访问和删除文件是否在内存中但我无法使用此方法从SD卡中删除文件,只能读取或打开d使用此绝对路径的图像。 如果您找到了使用此方法删除的解决方案,请分享。SD卡

getPath() uri: content://com.android.externalstorage.documents/tree/612E-B7BF%3A/document/612E-B7BF%3A

getPath() uri authority: com.android.externalstorage.documents

getPath() uri path: /tree/612E-B7BF:/document/612E-B7BF:

getPath() docId: 612E-B7BF:, split: 1, type: 612E-B7BF

主记忆

getPath() uri: content://com.android.externalstorage.documents/tree/primary%3A/document/primary%3A

getPath() uri authority: com.android.externalstorage.documents

getPath() uri path: /tree/primary:/document/primary:

getPath() docId: primary:, split: 1, type: primary

如果您希望在获得路径后使用file:///获取Uri

DocumentFile documentFile = DocumentFile.fromFile(new File(path));

documentFile.getUri() // will return a Uri with file Uri

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。