Как использовать намерение для выбора файлового браузера для выбора файла
Как использовать намерение предложить пользователю выбрать "закончить действие с", чтобы выбрать приложение для выбора файла (при условии, что есть несколько приложений для просмотра файла на устройстве)
Я хочу отфильтровать файл с помощью расширения.. (например: *.sav, *.props)
Заранее благодарю
Ответы
Ответ 1
Вы можете использовать что-то вроде этого:
....
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("file/*");
startActivityForResult(intent, YOUR_RESULT_CODE);
....
Но я действительно сомневаюсь, что вы можете установить фильтры сторонних файловых браузеров.
Или вы можете попробовать использовать этот диалог: http://code.google.com/p/android-file-dialog/
Ответ 2
это откроет встроенный файловый проводник, если он доступен, иначе попросите u выбрать файл, который вы установили.
private void showFileChooser() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
//intent.setType("*/*"); //all files
intent.setType("text/xml"); //XML file only
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"), FILE_SELECT_CODE);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.", Toast.LENGTH_SHORT).show();
}
}
Ответ 3
Это может помочь вам выбрать файл doc, и вы можете изменить действие в соответствии с вашими потребностями.
Intent intent;
if (VERSION.SDK_INT >= 19) {
intent = new Intent("android.intent.action.OPEN_DOCUMENT");
intent.setType("*/*");
} else {
PackageManager packageManager =getActivity().getPackageManager();
intent = new Intent("android.intent.action.GET_CONTENT");
intent.setType("file*//*");
if (packageManager.queryIntentActivities(intent,MEDIA_TYPE_IMAGE).size() == 0) {
UserToast.show(getActivity(), getResources().getString(R.string.no_file_manager_present));
}
}
if (getActivity().getPackageManager().resolveActivity(intent, NativeProtocol.MESSAGE_GET_ACCESS_TOKEN_REQUEST) != null) {
startActivityForResult(intent, UPLOAD_FILE);
}
Ответ 4
//проверяем здесь KITKAT или новую версию, и это также решит проблему с samsung file.
boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
if (isKitKat) {
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,FILE_SELECT_CODE);
} else {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent,FILE_SELECT_CODE);
}