android可否调用外部的应用,并获取想要的返回值?比如我的程序调用系统自带的相机应用,当相机拍照后,我的程序可以获取啊拍下的照片的路径信息?可以通过startActivityForResult(Intent) 方法来实现吗? 还是有什么其他方法?或者根本不能实现?

解决方案 »

  1.   

    我参考了一下sdk文档和网上的一些帖子,发现使用Action 'MediaStore.ACTION_IMAGE_CAPTURE'可以返回bitmap的图片,但不是图片存储的位置,当然,我可以取回图片后自己存到指定的地方,也可以解决我之前的问题。但是这样又有了一个更宽泛的问题了: 对于外部的应用程序,如果我想要调用并取回想要的信息的话,我首先要知道这个外部应用能够提供给我哪些信息(或者说接口), 这样才能有的放矢的去调用。但是如何获取外部应用的接口信息呢? 是每个应用都会有一个接口文档吗?我所知道的是Manifest.xml 会定义这个应用能够接受(input)的 Intent 类型, 但是有什么文档可以知道一个外部应用的返回信息(Output)吗?PS: MS外部应用的Manifest文件也不是对外公布的吧?迷惑中本人新手,请指点
      

  2.   

    问题解决了,android 自带的相机程序支持在Intent中指定照片存储的位置。
    只需要在Intent中传入你想要存储图片的位置就可以了,设置这个值 MediaStore.EXTRA_OUTPUTIntent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,outputFileUri);
    // launch camera
    startActivityForResult(cameraIntent, LAUNCH_CAMERA);
      

  3.   

    我也在研究这个,但是我添加cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,outputFileUri); 这个后 点击ok就没反应 感觉相机在等待执行什么命令一样
    可以加我 交流下吗?
      

  4.   

    返回的intent为空啊, 是什么原因?
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch(requestCode){
    case ACTIVITY_GET_CAMERA_IMAGE:
    Log.v(TAG, "ACTIVITY_GET_CAMERA_IMAGE___1" + data);
    Intent EditSend = new Intent(this, EditSendActivity.class);
    if(data != null){
    Bundle bundle = data.getExtras();
    EditSend.putExtras(bundle);
    Log.v(TAG, "ACTIVITY_GET_CAMERA_IMAGE___2");
    startActivity(EditSend);
    Log.v(TAG, "ACTIVITY_GET_CAMERA_IMAGE");
    }
    break;
    }
    }