VLC 意图总是 returns 结果代码 0 - RESULT_CANCELED
VLC intent always returns result code 0 - RESULT_CANCELED
此代码工作正常并按预期开始视频播放,但在我们的 Cordova 应用程序中退出 VLC 时,正确的 requestCode (42) 为 returned,但 resultCode 始终为 0(RESULT_CANCELLED) 和 returned Intent 为空。如果视频播放完毕并且 VLC 自行退出,也会发生同样的事情。根据 documentation,我们应该使用包含 extra_position 等信息的 return Intent 获取 RESULT_OK(在退出时获取视频位置)。
其他 Intent 工作正常,例如选择联系人 Intent。
在 Android 电视模拟器、Nvidia Shield 平板电脑和 Android phone 上测试(注 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());
}
替换
vlcIntent.setPackage("org.videolan.vlc");
和
vlcIntent.setComponent(new ComponentName("org.videolan.vlc", "org.videolan.vlc.gui.video.VideoPlayerActivity"));
这应该会给出您要查找的结果。
此代码工作正常并按预期开始视频播放,但在我们的 Cordova 应用程序中退出 VLC 时,正确的 requestCode (42) 为 returned,但 resultCode 始终为 0(RESULT_CANCELLED) 和 returned Intent 为空。如果视频播放完毕并且 VLC 自行退出,也会发生同样的事情。根据 documentation,我们应该使用包含 extra_position 等信息的 return Intent 获取 RESULT_OK(在退出时获取视频位置)。
其他 Intent 工作正常,例如选择联系人 Intent。
在 Android 电视模拟器、Nvidia Shield 平板电脑和 Android phone 上测试(注 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());
}
替换
vlcIntent.setPackage("org.videolan.vlc");
和
vlcIntent.setComponent(new ComponentName("org.videolan.vlc", "org.videolan.vlc.gui.video.VideoPlayerActivity"));
这应该会给出您要查找的结果。