Android開発初心者です。
書籍を参考に、いくつかAndroidアプリを作って開発の勉強をしている最中です。
カメラアプリと連携するアプリを作成しています。
画面いっぱいに配置したImageViewをタップするとカメラアプリが起動し、撮影後アプリの画面へ戻ると画像がImageViewにセットされるといった処理を実現しようとしています。
そちらは無事に動きましたが、続いて撮影後、ストレージから画像を取得してセットするという処理を書籍に従い書いていったところ、アプリが落ちるようになりました。
以下が該当のコードです。
Kotlin
1//MainActivity.kt 2 3 4class MainActivity : AppCompatActivity() { 5 6 private var _imageUri: Uri? = null 7 8 override fun onCreate(savedInstanceState: Bundle?) { 9 super.onCreate(savedInstanceState) 10 setContentView(R.layout.activity_main) 11 } 12 13 @SuppressLint("MissingSuperCall") 14 public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 15 if (requestCode == 200 && resultCode == Activity.RESULT_OK) { 16// val bitmap = data?.getParcelableExtra<Bitmap>("data") 17 val ivCamera = findViewById<ImageView>(R.id.ivCamara) 18// ivCamera?.setImageBitmap(bitmap) 19 ivCamera.setImageURI(_imageUri) 20 } 21 } 22 23 public override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) { 24 if (requestCode == 2000 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 25 val ivCamera = findViewById<ImageView>(R.id.ivCamara) 26 onCameraImageClick(ivCamera) 27 } 28 } 29 30 31 fun onCameraImageClick(view: View?) { 32 33 if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 34 val permission = arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE) 35 ActivityCompat.requestPermissions(this,permission, 2000) 36 return 37 } 38 39 val dateFormat = SimpleDateFormat("yyyyMMddHHmmss") 40 val now = Date() 41 val nowStr = dateFormat.format(now) 42 val fileName = "UseCameraActivityPhoto_${nowStr}.jpg" 43 val values = ContentValues() 44 values.put(MediaStore.Images.Media.TITLE, fileName) 45 values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg") 46 47 val intent = Intent(MediaStore.EXTRA_OUTPUT, _imageUri) 48 intent.putExtra(MediaStore.EXTRA_OUTPUT, _imageUri) 49 startActivityForResult(intent, 200) 50 } 51 52} 53 54 55 56
画面のレイアウトはこのように書いています。
xml
1 2<?xml version="1.0" encoding="utf-8"?> 3<ImageView 4 xmlns:android="http://schemas.android.com/apk/res/android" 5 xmlns:app="http://schemas.android.com/apk/res-auto" 6 android:id="@+id/ivCamara" 7 android:onClick="onCameraImageClick" 8 android:layout_width="match_parent" 9 android:layout_height="match_parent" 10 android:layout_gravity="center" 11 android:scaleType="center" 12 app:srcCompat="@android:drawable/ic_menu_camera"> 13</ImageView> 14 15
ImageViewをタップして落ちた時に出たエラーがこちらです。
logcat
1 2E/AndroidRuntime: FATAL EXCEPTION: main 3 Process: jp.wings.nikkeibp.cameraintentsample, PID: 7550 4 java.lang.IllegalStateException: Could not execute method for android:onClick 5 at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402) 6 at android.view.View.performClick(View.java:6597) 7 at android.view.View.performClickInternal(View.java:6574) 8 at android.view.View.access$3100(View.java:778) 9 at android.view.View$PerformClick.run(View.java:25885) 10 at android.os.Handler.handleCallback(Handler.java:873) 11 at android.os.Handler.dispatchMessage(Handler.java:99) 12 at android.os.Looper.loop(Looper.java:193) 13 at android.app.ActivityThread.main(ActivityThread.java:6669) 14 at java.lang.reflect.Method.invoke(Native Method) 15 at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 16 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 17 Caused by: java.lang.reflect.InvocationTargetException 18 at java.lang.reflect.Method.invoke(Native Method) 19 at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) 20 at android.view.View.performClick(View.java:6597) 21 at android.view.View.performClickInternal(View.java:6574) 22 at android.view.View.access$3100(View.java:778) 23 at android.view.View$PerformClick.run(View.java:25885) 24 at android.os.Handler.handleCallback(Handler.java:873) 25 at android.os.Handler.dispatchMessage(Handler.java:99) 26 at android.os.Looper.loop(Looper.java:193) 27 at android.app.ActivityThread.main(ActivityThread.java:6669) 28 at java.lang.reflect.Method.invoke(Native Method) 29 at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 30 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 31 Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=output (has extras) } 32 at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2007) 33 at android.app.Instrumentation.execStartActivity(Instrumentation.java:1673) 34 at android.app.Activity.startActivityForResult(Activity.java:4586) 35 at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676) 36 at android.app.Activity.startActivityForResult(Activity.java:4544) 37 at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663) 38 at jp.wings.nikkeibp.cameraintentsample.MainActivity.onCameraImageClick(MainActivity.kt:70) 39 at java.lang.reflect.Method.invoke(Native Method) 40 at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) 41 at android.view.View.performClick(View.java:6597) 42 at android.view.View.performClickInternal(View.java:6574) 43 at android.view.View.access$3100(View.java:778) 44 at android.view.View$PerformClick.run(View.java:25885) 45 at android.os.Handler.handleCallback(Handler.java:873) 46 at android.os.Handler.dispatchMessage(Handler.java:99) 47 at android.os.Looper.loop(Looper.java:193) 48 at android.app.ActivityThread.main(ActivityThread.java:6669) 49 at java.lang.reflect.Method.invoke(Native Method) 50 at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 51 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 52 53
目標は、ImageViewをタップしてもアプリが落ちず、カメラアプリが起動し、撮影後、ストレージから画像を取得してそれを同じImageViewにセットすることです。
解決方法を知っている方、もしくは、似たようなトラブルに対して解説しているようなWEBページなどを知っていらしたら、ご教示頂けると助かります。
作業環境
OS: Microsoft Windows10 Pro
使用言語: Kotlin 1.3.61
Android Studio 3.5.3
仮想デバイス: Nexus 4 API 28

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。