2

我正在编写一个必须拍照并将其发送到 Web 服务的应用程序。有我用来的代码:

i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
outputFileUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"/appicture.jpg"));
Log.i("URI", outputFileUri.toString());
i.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(i, cameraData);

URI 看起来像:

文件:///sdcard/appicture.jpg

但是,如果我将“outputFileUri”变量放在 i.putExtra 中,我的应用程序就会退出。如果没有,我可以拍照,但无法获取她的 URI,然后无法将其发送到我的网络服务。

编辑 1:错误日志(关于活动 resylt)

06-26 09:17:46.108: I/Cam 错误 (699): java.lang.NullPointerException

编辑 2:如果我删除“outputFileUri”,我正确地得到了图像。但是,然后我无法将位图转换为文件以便能够发送它。

if(resultCode == RESULT_OK){

            Bundle extras = data.getExtras();
            _bmp = (Bitmap) extras.get("data"); 

        }

编辑 3:

问题来自

_bmp = (Bitmap) extras.get("data");

并且图片已正确保存在 SD 卡中。

4

3 回答 3

3

在 Manifest 中添加WRITE_EXTERNAL_STORAGE权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

编辑: 如果您在 Intent 中传递 Image Uri 以捕获图像,则获取图像,如下所示onActiityResult

@Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
        if (requestCode == cameraData) {  
            File picture = new File(Environment.getExternalStorageDirectory() + "/appicture.jpg"); 
            Uri imguri=Uri.fromFile(picture);
            }
        super.onActivityResult(requestCode, resultCode, data);  
    }  

如果您想将图像作为数据获取,onActiityResult则将 Camra 启动为:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
startActivityForResult(intent, cameraData);  

在 onActivityResult 中:

 onActivityResult(int requestCode, int resultCode, Intent data) {  
        if (requestCode == 1) {  
            if (resultCode == cameraData) {  
                Bundle extras = data.getExtras();
                _bmp = (Bitmap) extras.get("data"); //Get data here

            }  
        }  
}  
于 2012-06-26T08:46:21.820 回答
1

请将此添加到清单文件中

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

快乐编码..

于 2012-06-26T08:47:25.017 回答
1

如果您已经添加了权限并且路径正确。您能否尝试在路径末尾删除“.jpg”

于 2012-06-26T08:59:25.093 回答