studio - toolbar startandroid




Android намерен играть видео? (4)

Использовать setDataAndType в намерении

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(newVideoPath));
intent.setDataAndType(Uri.parse(newVideoPath), "video/mp4");
startActivity(intent);

Используйте «video / mp4» в качестве MIME или используйте «video / *», если вы не знаете тип.

Я пытаюсь воспроизвести видео на Android, запустив намерение. Код, который я использую:

tostart = new Intent(Intent.ACTION_VIEW);
tostart.setDataAndType(Uri.parse(movieurl), "video/*");
startActivity(tostart); 

Это работает на большинстве телефонов, но не на HTC Hero . Кажется, он загружает немного другой видеоплеер. Это действительно первое видео, брошенное на него. Тем не менее, каждое видео после этого не отвечает. (он держится в некотором цикле).

Если я добавлю явное

tostart.setClassName("com.htc.album","com.htc.album.ViewVideo");

(до начала работы) он работает на HTC Hero . Однако, поскольку это специальный вызов HTC , я не могу запустить этот код на других телефонах (например, G1 ). На G1 это работает:

tostart.setClassName("com.android.camera","com.android.camera.MovieView"); //g1 version

Но этого намерения нет у героя. Кто-нибудь знает список намерений / классных имен, которые должны поддерживаться всеми устройствами Android? Или конкретный для запуска видео? Благодаря!


Начиная с этого момента API 24, Uri.parse(filePath) не будет работать. Вы должны использовать это

final File videoFile = new File("path to your video file");
Uri fileUri = FileProvider.getUriForFile(mContext, "{yourpackagename}.fileprovider", videoFile);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(fileUri, "video/*");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//DO NOT FORGET THIS EVER
startActivity(intent);

Но перед этим вам нужно понять, как работает поставщик файлов. Перейдите к официальной ссылке документа, чтобы лучше понять поставщика файлов.


из отладочной информации, похоже, что VideoIntent из MainActivity не может отправить путь видео в VideoActivity . Он дает ошибку NullPointerException из uriString . Я думаю, что некоторые из этого кода от VideoActivity :

Intent myIntent = getIntent();
String uri = myIntent.getStringExtra("uri");
Bundle b = myIntent.getExtras();

startVideo(b.getString(uri));

Не можете получить ури отсюда:

public void playsquirrelmp4(View v) {
    Intent VideoIntent = (new Intent(this, VideoActivity.class));
    VideoIntent.putExtra("android.resource://" + getPackageName()
        + "/"+   R.raw.squirrel, uri);
    startActivity(VideoIntent);
}

следующий код работает просто отлично для меня.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(movieurl));
startActivity(intent);




android-intent