使用微信聊天的时候分享一些模型文件, 然后通过微信的其他应用打开, 跳转到自己的app去展示模型, 但是在打开过程中会出现通过微信的uri 无法获取到文件的真实名称, 文件名称变成了一串乱码, 虽然后缀正确,
1、通过uri获取文件名称、路径的方法
public static void getFileFromUri(Uri uri, Context context) {
if (uri == null) {
return;
}
String filePath;
String fileName;
String[] filePathColumn = {MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.DISPLAY_NAME};
ContentResolver contentResolver = context.getContentResolver();
Cursor cursor = null;
try {
cursor = contentResolver.query(uri, filePathColumn, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
try {
fileName = cursor.getString(cursor.getColumnIndex(filePathColumn[1]));
} catch (Exception e) {
fileName = "";
}
try {
filePath = cursor.getString(cursor.getColumnIndex(filePathColumn[0]));
} catch (Exception e) {
filePath = "";
}
cursor.close();
Log.i("", String.format("%s-%s", filePath, fileName));
}
} catch (Exception e) {
e.printStackTrace();
}
}
2、通过调试发现微信会有两种uri传递, 如果文件名称是一串编码的, 就无法获取到
正常可以获取到name的uri:
接收的uri->content://com.tencent.mm.external.fileprovider/record/record2/sub10/510213/11/PRS2012-BT3040%E9%80%9A%E7%94%A8%E5%88%80%E5%BA%93%E6%94%AF%E6%9E%B6.STEP
cursor-name->PRS2012-BT3040通用刀库支架.STEP
cursor-path->
无法获取到实际名称的uri:
接收的uri->content://com.tencent.mm.external.fileprovider/c2c/opendata/79/42/797081705d8bd6513ebcb6e68f248e2f_8751236847546629642_m.step
cursor-name->797081705d8bd6513ebcb6e68f248e2f_8751236847546629642_m.step
cursor-path->
接收的uri->content://com.tencent.mm.external.fileprovider/c2c/opendata/79/94/797081705d8bd6513ebcb6e68f248e2f_6883161294787092994_m.step
cursor-name->797081705d8bd6513ebcb6e68f248e2f_6883161294787092994_m.step
cursor-path->
该如何操作,才能获取到文件的真实名称?

你好,安卓还是iOS