この質問はこのプラットフォームで尋ねられましたが、どれも役に立ちませんでした。したがって、このアプリケーションには、onPhotoClicked()へのコールバックを持つボタンClick Photoがあります。マニフェストでWRITE_EXTERNAL_STORAGE権限について言及しました。写真をクリックした後、キャンセル ボタンはアクティビティに戻りますが、OK ボタンは何もしません。
コードは次のとおりです。
public class MainActivity extends AppCompatActivity {
Button emailButton, clickPhotoButton;
private static final String FILE_NAME="image01.jpg";
private static final int CAMERA_PIC_REUEST = 100;
private static final int REQUEST_WRITE_EXTERNAL_STORAGE = 1;
File pictureDir;
Uri fileUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
emailButton = (Button) findViewById(R.id.email_button);
clickPhotoButton = (Button) findViewById(R.id.click_photo_button);
pictureDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Prakhar");
if(!pictureDir.exists()) {
pictureDir.mkdirs();
}
}
public void onPhotoClicked(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File image = new File(pictureDir, FILE_NAME);
fileUri = Uri.fromFile(image);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(intent, CAMERA_PIC_REUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == CAMERA_PIC_REUEST && resultCode == RESULT_OK) {
ImageView imageView = (ImageView) findViewById(R.id.image_view);
File image = new File(pictureDir, FILE_NAME);
fileUri = Uri.fromFile(image);
imageView.setImageURI(fileUri);
}
}
}