使用正确的返回码处理startActivityForResult()

时间:2015-07-17 14:16:29

标签: android android-intent android-activity android-mediaplayer

我正在尝试创建一个测试应用程序,它将从内部启动不同玩家应用程序的意图。

尝试过这样的事情:

X = 100
X = 200

我了解 startActivityForResult() 会在启动的intent完成作业后触发回调。正如 onActivityResult() 实现中的预期,我收到完成通知。

Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
File file = new File("/sdcard/1234.mp4");  
intent.setDataAndType(Uri.fromFile(file), "video/*");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setClassName("com.android.gallery3d","com.android.gallery3d.app.MovieActivity");
startActivityForResult(intent, ON_COMPLETION);

}

但是,我的问题是我得到的结果是" ZERO"即使播放成功,或者即使我在启动意图时指定了无效的文件名,也总是即resultCode = RESULT_CANCELED

这是我的清单文件:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);  
    Log.i(TAG,"onActivityResult with resultCode " + resultCode + "requestCode" + requestCode);

以下是我的问题:
1.我们如何更好地处理onCompletion事件?即已启动意图的返回状态,无论是播放成功还是失败 2.如果这不是正确的实现方式,请指导我到正确的教程集,我可以获得一些示例代码吗?

我的目标是多媒体播放器应用程序(如图库,MX播放器和VLC)的启动意图,并了解指定剪辑的文件播放是否成功。

我是新手,关于这个主题的一些建议会更有帮助。

1 个答案:

答案 0 :(得分:1)

在Android Developer Activities

上写的
  

在其他协议(例如ACTION_MAIN或ACTION_VIEW)中,您可能不会   在你期待的时候得到结果。

你不能指望返回你期望的动作视图,所以我所做的是实现一个自定义警告对话框,显示所有可能打开某个文件的应用程序,一个稍微修改过的版本,如下所示{{3} }

Custom intent chooser

<强>更新
经过一次搜索后我找到more,你可以看到各种类,但重要的是你用意图调用的类不会改变返回值。
您正在调用扩展Activity而不是ActivityState的MovieActivity。
在抽象类that中,值正在变化并返回。也许那是你的问题。