Android的FilePicker对话框只适用于某些设备
问题描述:
我正在使用常规boiler-plate代码来显示android上的File Picker对话框。获取文件路径后,我使用aQuery将该文件上传到我的服务器。 但是,该代码只适用于我的旧版Android 4.1.2上运行的三星手机,但不能在任何其他设备上运行。我使用许多设备对其进行了测试,但它仅适用于带有果冻豆的三星设备。Android的FilePicker对话框只适用于某些设备
的onActivityResult代码:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
fPath = data.getDataString();
File file = new File(fPath.substring(7));
params.put("file" + noFilesAttached, file);
noFilesAttached = noFilesAttached + 1;
path.setText(noFilesAttached + " files attached ");
upload.setText("Upload (" + noFilesAttached + ")");
upload.setVisibility(View.VISIBLE);
isUploaded = false;
}
super.onActivityResult(requestCode, resultCode, data);
}
我试图编辑fPath.substring(7)到fpath没有成功,我不希望使用任何三阶党的图书馆。
在此先感谢。
答
Data.getData()
return a uri
; U需要一个文件路径; 尝试寻找方法来改造uri
到文件路径: 可能:
public static String getRealFilePath(final Context context, final Uri uri) {
if (null == uri) return null;
final String scheme = uri.getScheme();
String data = null;
if (scheme == null)
data = uri.getPath();
else if (ContentResolver.SCHEME_FILE.equals(scheme)) {
data = uri.getPath();
} else if (ContentResolver.SCHEME_CONTENT.equals(scheme)) {
Cursor cursor = context.getContentResolver().query(uri, new String[] { ImageColumns.DATA }, null, null, null);
if (null != cursor) {
if (cursor.moveToFirst()) {
int index = cursor.getColumnIndex(ImageColumns.DATA);
if (index > -1) {
data = cursor.getString(index);
}
}
cursor.close();
}
}
return data;
}
+0
此代码似乎不适用于Android 5.1.1。我正在寻找其他选项,但感谢您指点我正确的方向。 –
当其他电话:!getPackageManager()resolveActivity(sIntent,0)=空返回假的? –
在其他手机中返回false –
在其他手机中,您是否可以在onActivityResult中获得结果? –