复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152public static String getRealPathFromURI(Context var0, Uri var1) { boolean var2 = Build.VERSION.SDK_INT >= 19; String var3; if (var2 && DocumentsContract.isDocumentUri(var0, var1)) { String[] var4; String var5; if (isExternalStorageDocument(var1)) { var3 = DocumentsContract.getDocumentId(var1); var4 = var3.split(":"); var5 = var4[0]; if ("primary".equalsIgnoreCase(var5)) { return Environment.getExternalStorageDirectory() + "/" + var4[1]; } } else { if (isDownloadsDocument(var1)) { var3 = DocumentsContract.getDocumentId(var1); Uri var9 = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(var3)); return getDataColumn(var0, var9, (String) null, (String[]) null); } if (isMediaDocument(var1)) { var3 = DocumentsContract.getDocumentId(var1); var4 = var3.split(":"); var5 = var4[0]; Uri var6 = null; if ("image".equals(var5)) { var6 = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; } else if ("VIDEO".equals(var5)) { var6 = android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI; } else if ("AUDIO".equals(var5)) { var6 = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; } String var7 = "_id=?"; String[] var8 = new String[]{var4[1]}; return getDataColumn(var0, var6, "_id=?", var8); } } } else { var3 = getFPUriToPath(var0, var1); if (!TextUtils.isEmpty(var3)) { return var3; } if ("content".equalsIgnoreCase(var1.getScheme())) { return getDataColumn(var0, var1, (String) null, (String[]) null); } if ("file".equalsIgnoreCase(var1.getScheme())) { return var1.getPath(); } } return null; } public static boolean isExternalStorageDocument(Uri var0) { return "com.android.externalstorage.documents".equals(var0.getAuthority()); } public static boolean isDownloadsDocument(Uri var0) { return "com.android.providers.downloads.documents".equals(var0.getAuthority()); } public static boolean isMediaDocument(Uri var0) { return "com.android.providers.media.documents".equals(var0.getAuthority()); } public static String getDataColumn(Context var0, Uri var1, String var2, String[] var3) { Cursor var4 = null; String var5 = "_data"; String[] var6 = new String[]{"_data"}; String var8; try { var4 = var0.getContentResolver().query(var1, var6, var2, var3, (String) null); if (var4 == null || !var4.moveToFirst()) { return null; } int var7 = var4.getColumnIndexOrThrow("_data"); var8 = var4.getString(var7); } finally { if (var4 != null) { var4.close(); } } return var8; } public static String getFPUriToPath(Context var0, Uri var1) { try { List var2 = var0.getPackageManager().getInstalledPackages(8); if (var2 != null) { String var3 = FileProvider.class.getName(); Iterator var4 = var2.iterator(); while (true) { while (true) { ProviderInfo[] var6; do { if (!var4.hasNext()) { return null; } PackageInfo var5 = (PackageInfo) var4.next(); var6 = var5.providers; } while (var6 == null); ProviderInfo[] var7 = var6; int var8 = var6.length; for (int var9 = 0; var9 < var8; ++var9) { ProviderInfo var10 = var7[var9]; if (var1.getAuthority().equals(var10.authority)) { if (var10.name.equalsIgnoreCase(var3)) { Class var11 = FileProvider.class; try { Method var12 = var11.getDeclaredMethod("getPathStrategy", Context.class, String.class); var12.setAccessible(true); Object var13 = var12.invoke((Object) null, var0, var1.getAuthority()); if (var13 != null) { String var14 = FileProvider.class.getName() + "$PathStrategy"; Class var15 = Class.forName(var14); Method var16 = var15.getDeclaredMethod("getFileForUri", Uri.class); var16.setAccessible(true); Object var17 = var16.invoke(var13, var1); if (var17 instanceof File) { String var18 = ((File) var17).getAbsolutePath(); return var18; } } } catch (NoSuchMethodException var19) { var19.printStackTrace(); } } break; } } } } } } catch (Exception var23) { var23.printStackTrace(); } return null; }
最后
以上就是微笑冥王星最近收集整理的关于从Uri获取文件真实路径的全部内容,更多相关从Uri获取文件真实路径内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复