前提・実現したいこと
カメラアプリを起動し、撮影した画像をimageviewで表示させたい
その過程でUnresolved reference: permissionのエラーが発生したので解決したい
発生している問題・エラーメッセージ
Unresolved reference: permission
該当のソースコード
MainActivity
1import android.app.Activity 2import android.content.ContentValues 3import android.content.Intent 4import android.content.pm.PackageManager 5import android.net.Uri 6import androidx.appcompat.app.AppCompatActivity 7import android.os.Bundle 8import android.provider.MediaStore 9import android.view.View 10import android.widget.ImageView 11import androidx.core.app.ActivityCompat 12import androidx.core.content.ContextCompat 13import java.text.SimpleDateFormat 14import java.util.Date 15 16import java.util.jar.* 17 18class MainActivity : AppCompatActivity() { 19 private var _imageUri: Uri? = null 20 override fun onCreate(savedInstanceState: Bundle?) { 21 super.onCreate(savedInstanceState) 22 setContentView(R.layout.activity_main) 23 } 24 25 public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 26 super.onActivityResult(requestCode, resultCode, data) 27 if(requestCode == 200 && resultCode == RESULT_OK) { 28 29 val ivCamera = findViewById<ImageView>(R.id.ivCamera) 30 ivCamera.setImageURI(_imageUri) 31 } 32 } 33 34 fun onCameraImageClick(view: View) { 35 val permission = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) 36 if(ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 37 //WRITE_EXTERNAL_STORAGEの許可を求めるダイアログを表示。その際、リクエストコードを2000に設定。 38 val permissions = arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE) 39 ActivityCompat.requestPermissions(this, permissions, 2000) 40 return 41 } 42 val dateFormat = SimpleDateFormat("yyyyMMddHHmmss") 43 val now = Date() 44 val nowStr = dateFormat.format(now) 45 val fileName = "UseCameraActivityPhoto_${nowStr}.jpg" 46 val values = ContentValues() 47 values.put(MediaStore.Images.Media.TITLE, fileName) 48 values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg") 49 _imageUri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values) 50 val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) 51 intent.putExtra(MediaStore.EXTRA_OUTPUT, _imageUri) 52 startActivityForResult(intent, 200) 53 } 54 55 override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) { 56 super.onRequestPermissionsResult(requestCode, permissions, grantResults) 57 58 if (requestCode == 2000 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 59 val ivCamera = findViewById<ImageView>(R.id.ivCamera) 60 onCameraImageClick(ivCamera) 61 } 62 } 63}
Manifest
1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="jp.co.stv_tech.test242"> 4 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 5 6 <application 7 android:allowBackup="true" 8 android:icon="@mipmap/ic_launcher" 9 android:label="@string/app_name" 10 android:roundIcon="@mipmap/ic_launcher_round" 11 android:supportsRtl="true" 12 android:theme="@style/AppTheme"> 13 <activity android:name=".MainActivity"> 14 <intent-filter> 15 <action android:name="android.intent.action.MAIN" /> 16 17 <category android:name="android.intent.category.LAUNCHER" /> 18 </intent-filter> 19 </activity> 20 </application> 21 22</manifest>
xml
1<?xml version="1.0" encoding="utf-8"?> 2<ImageView xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 android:id="@+id/ivCamera" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 android:layout_gravity="center" 8 android:onClick="onCameraImageClick" 9 android:scaleType="center" 10 app:srcCompat="@android:drawable/ic_menu_camera" />
試したこと
referenceが見つからないとあったので、スペルミスがないか
Manifestに書き漏れがないかチェックしましたが、
原因が見つかりませんでした。
referenceが見つからない場合どこを原因として探していけば良いか教えていただけないでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/22 04:08