0

私はこれらのコードを持っています。カメラが開き、写真が撮られますが、「OK」ボタンをクリックしても何も起こりません。以前のアクティビティに戻る唯一の方法は、「x」ボタンをクリックすることですが、これは私には役に立ちません:)。何が問題ですか?(onActivityResult メソッドはまだ完成していません。) (私はこのアルゴリズムをAndroid.provider.MediaStore.ACTION_IMAGE_CAPTUREインテントで使用していました。すべて問題ありませんでした。なぜ今問題が発生しているのかわかりません。)

public void onClick(View v) {

            Intent getCameraImage = new Intent("android.media.action.IMAGE_CAPTURE");
            db.open();
            Cursor cr = db.getAllRecords();
            int count = cr.getCount();

            db.close();

            File cameraFolder;

            if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
                cameraFolder = new File(android.os.Environment.getExternalStorageDirectory(),"TSFC");
            else
                cameraFolder= ShowMessagesPage.this.getCacheDir();
            if(!cameraFolder.exists())
                cameraFolder.mkdirs();

            File photo = new File(Environment.getExternalStorageDirectory(), "TSFC/" + (count + 1) + ".jpg");
            getCameraImage.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));

            initialURI = Uri.fromFile(photo);

            startActivityForResult(getCameraImage, CAMERA_RESULT);
        }});}

protected void onActivityResult(int requestCode, int resultCode,
          Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);

        if (resultCode == RESULT_OK) {
            Bundle extras = intent.getExtras();
            photo = (Uri) extras.get("data");


        }
      }
4

2 に答える 2

1

わかりました、よく知られているバグです。

このコード行を追加するだけで、photo.createNewFile();

何かのようなもの、

File photo = new File(Environment.getExternalStorageDirectory(), "TSFC/" + (count + 1) + ".jpg");
photo.createNewFile();
getCameraImage.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));

また、忘れないでください。

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

そして進捗状況を教えてください。

于 2013-01-12T17:58:36.423 に答える
0

Method を使用onActivityResult(..)して、このように Result を取得します。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == CAMERA_RESULT) {
        // Make sure the request was successful

            if (resultCode == RESULT_OK) {
            Bundle extras = intent.getExtras();
            photo = (Uri) extras.get("data");

        }
    }
}
于 2013-01-12T17:34:31.733 に答える