1

カメラで撮影した保存画像のパスを取得する標準的な方法はありますか?パスを表示するさまざまな方法を見つけましたが、アプリがクラッシュする原因となります。私はAndroidプログラミングが初めてなので、ガイダンスが必要です。コードを確認してください:

Java コード:

@Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File imagesFolder = new File(Environment.getExternalStorageDirectory(), "My Images");
            imagesFolder.mkdirs();
            File image = new File(imagesFolder, "img01");
            uriSavedImage = Uri.fromFile(image);
            File f = new File (uriSavedImage.getPath());// <---------
            //imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
            imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, f.getPath()); // <---------
            startActivityForResult(imageIntent,CAMERA_REQUEST_CODE);
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if ((requestCode == CAMERA_REQUEST_CODE) && (resultCode == RESULT_OK)) {

            Toast.makeText(getApplicationContext(),// <---------
                    " "+data.getData(), 
                    Toast.LENGTH_SHORT).show();
4

1 に答える 1

0

getParent()メソッドに渡すためクラッシュしますconvertImageUriToFile(スタックトレースで NullPointerException を確認できます)。Android docs によるとgetParent()、アクティビティが埋め込まれていない場合は null が返されます。あなたのものはおそらくそうではありません。

File f = convertImageUriToFile(uriSavedImage, this);代わりに使用してください。

imageUri が null であるという別のエラーについては、考えられる説明と解決策について、この回答を参照してください。

さらに、imageUri は「file://」タイプの uri であり、「content://」タイプではありません。そこからパスを取得するには、次を使用します。

new File(uri.getPath());

convertImageUriToFIle()あなたの方法の代わりに。そのメソッドは、「content://」タイプの uris に対してのみ機能すると思います。

実際には、自分で作成した uri からファイル パスを取得する必要はありません。次の行にそのパスがあります。

File image = new File(imagesFolder, "img01");
于 2012-03-21T20:33:26.907 に答える