三星文件浏览器需要传递不仅是自定义操作 (com.sec.android.app.myfiles.PICK_DATA),
还需要包括类别部分 (Intent.CATEGORY_DEFAULT) 和 MIME 类型作为额外参数。
Intent intent = new Intent("com.sec.android.app.myfiles.PICK_DATA");
intent.putExtra("CONTENT_TYPE", "*/*");
intent.addCategory(Intent.CATEGORY_DEFAULT);
您也可以使用此操作来打开多个文件:com.sec.android.app.myfiles.PICK_DATA_MULTIPLE
无论如何,以下是我的解决方案,在三星和其他设备上都适用:
您还可以使用此操作来打开多个文件:com.sec.android.app.myfiles.PICK_DATA_MULTIPLE。以下是适用于三星和其他设备的解决方案:
public void openFile(String mimeType) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType(mimeType);
intent.addCategory(Intent.CATEGORY_OPENABLE);
Intent sIntent = new Intent("com.sec.android.app.myfiles.PICK_DATA");
sIntent.putExtra("CONTENT_TYPE", mimeType);
sIntent.addCategory(Intent.CATEGORY_DEFAULT);
Intent chooserIntent;
if (getPackageManager().resolveActivity(sIntent, 0) != null){
chooserIntent = Intent.createChooser(sIntent, "Open file");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { intent});
} else {
chooserIntent = Intent.createChooser(intent, "Open file");
}
try {
startActivityForResult(chooserIntent, CHOOSE_FILE_REQUESTCODE);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(getApplicationContext(), "No suitable File Manager was found.", Toast.LENGTH_SHORT).show();
}
}
这个解决方案对我非常有效,也许对其他人有用。