【问题标题】:VLC intent always returns result code 0 - RESULT_CANCELEDVLC 意图始终返回结果代码 0 - RESULT_CANCELED
【发布时间】:2017-07-31 23:40:35
【问题描述】:

此代码工作正常并按预期开始视频播放,但在我们的 Cordova 应用程序中退出 VLC 时,返回正确的 requestCode (42),但 resultCode 始终为 0 (RESULT_CANCELLED) 并且返回的 Intent 为空。如果视频完成播放并且 VLC 自行退出,也会发生同样的事情。根据documentation,我们应该得到RESULT_OK,返回Intent包含extra_position等信息(在退出时获取视频位置)。

其他 Intent 工作正常,例如选择联系人 Intent。

在 Android TV 模拟器、Nvidia Shield 平板电脑和 Android 手机上进行了测试(注 4)。尝试过 VLC 2.0.6、最新的 Beta 版和夜间版本。

   public void start(String uri, long position) {
    int vlcRequestCode = 42;
    Uri parsedUri = Uri.parse(uri);
    Intent vlcIntent = new Intent(Intent.ACTION_VIEW);
    vlcIntent.setPackage("org.videolan.vlc");
    vlcIntent.setDataAndTypeAndNormalize(parsedUri, "video/*");
    vlcIntent.putExtra("position", position);

    this.cordova.startActivityForResult(this, vlcIntent, vlcRequestCode);
}

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    JSONObject json = new JSONObject();

    json.put("requestCode", requestCode);
    json.put("resultCode", resultCode);
    json.put("intentIsNull", intent == null);

    this.callbackContext.success(json.toString());
}    

【问题讨论】:

  • 您期待什么样的结果?打算如何处理结果?
  • 我们期待 -1 RESULT_OK resultCode 和一个有效的 Intent 对象,我们可以从中获取 extra_position 值以确定播放器在视频中的位置

标签: javascript android cordova android-intent vlc


【解决方案1】:

替换

vlcIntent.setPackage("org.videolan.vlc");

vlcIntent.setComponent(new ComponentName("org.videolan.vlc", "org.videolan.vlc.gui.video.VideoPlayerActivity"));

这应该会给出您正在寻找的结果。

【讨论】:

  • 非常感谢,这解决了问题!
猜你喜欢
  • 2019-04-20
  • 2012-12-09
  • 2011-07-14
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
  • 2023-03-14
  • 2018-09-12
  • 1970-01-01
相关资源
最近更新 更多