Android 观看视频文件的隐含意图
Android Implicit Intent for Viewing a Video File
在我的 Android 应用程序中,我有一个按钮,单击该按钮会启动我选择的外部应用程序来播放视频(据我所知,这称为 "implicit intent")。这是来自我的 onCreate
方法的相关 Java 代码。
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener
(
new Button.OnClickListener()
{
public void onClick(View v)
{
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("https://youtu.be/jxoG_Y6dvU8"), "video/*");
startActivity(i);
}
}
);
我希望它能工作,因为我非常仔细地遵循了教程和 Android 开发人员文档,但是当我在 AVD 中测试我的应用程序时,我没有提示外部应用程序菜单观看我的视频,应用程序崩溃。
是什么导致我的应用程序崩溃?
将您的 onClick 方法更改为以下代码。你应该给选择外部播放器的选项。
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("https://youtu.be/jxoG_Y6dvU8"), "video/*");
startActivity(Intent.createChooser(intent, "Complete action using"));
}
更改您的代码以添加此检查:
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("https://youtu.be/jxoG_Y6dvU8"), "video/*");
// Check there is an activity that can handle this intent
if (i.resolveActivity(getPackageManager()) == null) {
// TODO No activity available. Do something else.
} else {
startActivity(i);
}
在我的 Android 应用程序中,我有一个按钮,单击该按钮会启动我选择的外部应用程序来播放视频(据我所知,这称为 "implicit intent")。这是来自我的 onCreate
方法的相关 Java 代码。
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener
(
new Button.OnClickListener()
{
public void onClick(View v)
{
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("https://youtu.be/jxoG_Y6dvU8"), "video/*");
startActivity(i);
}
}
);
我希望它能工作,因为我非常仔细地遵循了教程和 Android 开发人员文档,但是当我在 AVD 中测试我的应用程序时,我没有提示外部应用程序菜单观看我的视频,应用程序崩溃。
是什么导致我的应用程序崩溃?
将您的 onClick 方法更改为以下代码。你应该给选择外部播放器的选项。
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("https://youtu.be/jxoG_Y6dvU8"), "video/*");
startActivity(Intent.createChooser(intent, "Complete action using"));
}
更改您的代码以添加此检查:
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("https://youtu.be/jxoG_Y6dvU8"), "video/*");
// Check there is an activity that can handle this intent
if (i.resolveActivity(getPackageManager()) == null) {
// TODO No activity available. Do something else.
} else {
startActivity(i);
}