Выберите любой файл вида через намерение на Android
Я хотел бы запустить intentchooser для приложений, которые могут возвращать любой файл
В настоящее время я использую (который я скопировал из исходного кода электронной почты Android для вложения файлов)
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
Intent i = Intent.createChooser(intent, "File");
startActivityForResult(i, CHOOSE_FILE_REQUESTCODE);
но он показывает только" галерею "и" музыкальный плеер " на моем Galaxy S2. На этом устройстве есть проводник файлов, и я хотел бы, чтобы он появился в списке. Я также хотел бы, чтобы приложение камеры отображалось в списке, чтобы пользователь мог снимать изображение и отправлять его через мое приложение. если я установите Astro file manager, он также ответит на это намерение. Мои клиенты-только владельцы Galaxy SII, и я не хочу заставлять их устанавливать Astro file manager, учитывая, что у них уже есть базовый, но достаточный файловый менеджер.
есть идеи, как я мог бы достичь этого ? Я почти уверен, что я уже видел, что файловый менеджер по умолчанию появляется в таком меню, чтобы выбрать файл, но я не могу вспомнить, в каком приложении.
5 ответов:
не для камеры, а для других файлов..
в моем устройстве, у меня есть
ES File Explorer
установлен, и это просто вещь работает в моем случае..Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("file/*"); startActivityForResult(intent, PICKFILE_REQUEST_CODE);
Samsung file explorer нуждается не только в пользовательском действии ( com.сек.андроид.приложение.myfiles.PICK_DATA), но и категория часть (умысел.CATEGORY_DEFAULT) и mime-тип должен быть передан как дополнительный.
Intent intent = new Intent("com.sec.android.app.myfiles.PICK_DATA"); intent.putExtra("CONTENT_TYPE", "*/*"); intent.addCategory(Intent.CATEGORY_DEFAULT);
вы также можете использовать это действие для открытия нескольких файлов: ком.сек.андроид.приложение.myfiles.PICK_DATA_MULTIPLE В любом случае, вот мое решение, которое работает на samsung и другие устройства:
public void openFile(String minmeType) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType(minmeType); intent.addCategory(Intent.CATEGORY_OPENABLE); // special intent for Samsung file manager Intent sIntent = new Intent("com.sec.android.app.myfiles.PICK_DATA"); // if you want any file type, you can skip next line sIntent.putExtra("CONTENT_TYPE", minmeType); sIntent.addCategory(Intent.CATEGORY_DEFAULT); Intent chooserIntent; if (getPackageManager().resolveActivity(sIntent, 0) != null){ // it is device with samsung file manager 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(); } }
это решение хорошо работает для меня, и, возможно, будет будьте полезны для кого-то еще.
эта работа для меня на galaxy note его показывают контакты, файловые менеджеры, установленные на устройстве, галерея, музыкальный проигрыватель
private void openFile(Int CODE) { Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.setType("*/*"); startActivityForResult(intent, CODE); }
вот вам путь в
onActivityResult
деятельности.protected void onActivityResult(int requestCode, int resultCode, Intent data) { String Fpath = data.getDataString(); // do somthing... super.onActivityResult(requestCode, resultCode, data); }
оказывается, проводник файлов Samsung использует пользовательское действие. Вот почему я мог видеть проводник файлов Samsung при поиске файла из приложений samsung, но не из моего.
действие " com.сек.андроид.приложение.myfiles.PICK_DATA"
Я создал пользовательский выбор действий, который отображает действия, фильтрующие оба намерения.
Если вы хотите знать это, он существует библиотека с открытым исходным кодом под названием aFileDialog что это небольшой и простой в использовании, который обеспечивает сборщик файлов.
разница с библиотеками другого выбора файлов для Android заключается в том, что aFileDialog дает вам возможность открыть файл выбора в качестве диалогового окна и в качестве действия.
Он также позволяет выбирать папки, создавать файлы, фильтровать файлы с помощью регулярных выражений и показывать диалоги подтверждения.