startActivity к ссылкам «file: //» падает

1

Я пытаюсь создать программу, которая просто открывает файл на sdcard. Я пробовал открывать mp3, mp4 и apk - подсказка всегда неожиданно срабатывает.

  String _path = "file:///sdcard/1.apk";

     Uri outputFileUri = Uri.parse(_path);
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);

Сливаются также рыночные связи. Но когда я устанавливаю _path = "http://google.com" - браузер открывается нормально. Как я могу заставить этот код работать?

Теги:
android-intent

1 ответ

0
Лучший ответ

Если вы пытаетесь установить apk, вам необходимо использовать следующее:

String fileName = Environment.getExternalStorageDirectory() + "/1.apk";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
startActivity(intent);

Если вы пытаетесь запустить приложение (после установки), выполните следующие действия:

Intent intent = new Intent();
intent.setClassName("com.pkg.addr", "com.pkg.addr.MainActivity");
startActivity(intent);

Если вы пытаетесь запустить плеер для воспроизведения mp3 файла:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse("file:///sdcard/1.mp3");
intent.setDataAndType(data,"audio/mp3");
startActivity(intent); 

Надеюсь, что это поможет.

  • 0
    Большой! Работает! Спасибо! Так что мне нужно всегда определять MIME-тип? Разве Android не позволяет пользователю выбирать, что он хочет делать с файлом?
  • 0
    Android действительно позволяет пользователю выбирать, какое приложение должно обрабатывать файл, среди тех приложений на его телефоне, которые способны обрабатывать его.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню