2019 May 25.
"AndroidManifest.xml"
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx.xxx.sampletakephotogetimagefile">
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
"AndroidManifest.xml"
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx.xxx.sampletakephotogetimagefile">
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
if(Build.VERSION.SDK_INT >= 23){
checkPermission();
}
PROCESS_AFTER_GETTING_PERMISSIONS
// Permissionの確認
// reuse of https://akira-watson.com/android/mediastore.html
@TargetApi(Build.VERSION_CODES.M)
public void checkPermission() {
if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
requestCameraPermission();
}
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
requestExStoragePermission();
}
}
// CameraPermission許可を求める
@TargetApi(Build.VERSION_CODES.M)
private void requestCameraPermission() {
if (shouldShowRequestPermissionRationale( Manifest.permission.CAMERA)) {
requestPermissions(new String[]{Manifest.permission.CAMERA}, REQUEST_PERMISSION_CAMERA);
} else {
Toast toast = Toast.makeText(this, "許可されないとアプリが実行できません", Toast.LENGTH_SHORT);
toast.show();
requestPermissions(new String[]{Manifest.permission.CAMERA }, REQUEST_PERMISSION_CAMERA);
}
}
// ExternalStoragePermission許可を求める
@TargetApi(Build.VERSION_CODES.M)
private void requestExStoragePermission() {
if (shouldShowRequestPermissionRationale( Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION__EX_STORAGE);
} else {
Toast toast = Toast.makeText(this, "許可されないとアプリが実行できません", Toast.LENGTH_SHORT);
toast.show();
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE }, REQUEST_PERMISSION__EX_STORAGE);
}
}
// requestPermission結果に対する処理
@Override
public void onRequestPermissionsResult( int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_PERMISSION_CAMERA) {
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
// 拒否された時の対応
Toast toast = Toast.makeText(this, "これ以上なにもできません", Toast.LENGTH_SHORT);
toast.show();
}
} else if (requestCode == REQUEST_PERMISSION__EX_STORAGE) {
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
// 拒否された時の対応
Toast toast = Toast.makeText(this, "これ以上なにもできません", Toast.LENGTH_SHORT);
toast.show();
}
} else {
Toast toast = Toast.makeText(this, "Bad requestCode", Toast.LENGTH_SHORT);
toast.show();
}
}
0 件のコメント:
コメントを投稿