【问题标题】:Intent to launch video does not complete on Nexus 7 / Android 4.1.1在 Nexus 7 / Android 4.1.1 上未完成启动视频的意图
【发布时间】:2012-10-01 09:01:35
【问题描述】:

我有一个启动视频的应用小部件。它适用于我所有的旧设备,甚至我的 4.1 模拟器,但不适用于我的目标设备,即 Nexus 7。在旧设备上,包括 S2,当您点击小部件时,视频播放。在 Nexus 7 上,小部件被突出显示,但随后没有触发。

配置活动中创建意图的代码非常简单:

Intent videoIntent = new Intent(Intent.ACTION_VIEW);
videoIntent.setDataAndType(Uri.parse(selectedPath), "video/*");
PendingIntent pendingIntent = PendingIntent.getActivity(getBaseContext(), 0,    videoIntent, PendingIntent.FLAG_UPDATE_CURRENT);

RemoteViews views = new RemoteViews(getBaseContext().getPackageName(), R.layout.widgetlayout);
views.setImageViewBitmap(R.id.widgetButton, thumbnail);
views.setOnClickPendingIntent(R.id.widgetButton, pendingIntent);

我似乎找不到比 Intent.ACTION_VIEW 更多的与设备无关的方法来启动视频。

有什么想法吗?

【问题讨论】:

  • 用正确的 MIME 类型替换 video/* 会发生什么?为什么你使用getBaseContext()而不是适当范围的this
  • 任何堆栈跟踪、logcat、任何信息?
  • CommonsWare: video/* 是正确的 MIME 类型,不是吗?我想我从一些代码 sn-ps 中选择了getBasecontext()。我已将其替换为 (context) this。它仍然无法在 Nexus 上运行。我可以使用标准视频播放器从图库中播放视频。我已经确认这些更改并未纠正 Nexus 7 上的问题,但该小部件在我的其他设备上仍然可以正常工作。不过,我们非常感谢您的帮助。如果您有任何其他想法,请告诉我。
  • njzk2:日志中没有错误消息。我看不到任何相关的东西。有一个我认为与我的小部件无关的一般错误。 09-25 20:14:38.930: E/ActivityThread(518): Activity com.android.internal.app.ChooserActivity has leaked IntentReceiver com.android.internal.app.ResolverActivity$1@40f837a0 that was originally registered here. Are you missing a call to unregisterReceiver()?
  • 大家有什么想法吗?这个意图在我的 S2 和 Tf700 上仍然可以正常工作。只有 Nexus 7 表现不佳。我的意图代码如下:

标签: android video android-intent android-appwidget


【解决方案1】:

我找到了答案。这可能适用于运行 Android 4.1.1 的任何设备,尽管我不需要为运行 4.1 的模拟器执行此操作

我原来的代码是:

Intent videoIntent = new Intent(Intent.ACTION_VIEW);
videoIntent.setDataAndType(Uri.parse(selectedPath), "video/*");
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, videoIntent, PendingIntent.FLAG_UPDATE_CURRENT);

但是由于某种原因,我必须使用 File() 和 Uri.fromFile。

Intent videoIntent = new Intent(Intent.ACTION_VIEW);
File file = new File(selectedPath);
videoIntent.setDataAndType(Uri.fromFile(file), "video/mp4");
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, videoIntent, PendingIntent.FLAG_UPDATE_CURRENT);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-06
    • 2017-08-08
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2014-03-13
    相关资源
    最近更新 更多