こちら「deprecated 対応」の「ActivityResultContracts.RequestPermission()」の複数権限時の書き方。
...▼
...▼
プロジェクト\app\src\main\AndroidManifest.xml の一部
プロジェクト\app\src\main\java\asia\remix\myapplication\MainActivity.java
●ラムダ式を使わない場合
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />●ラムダ式を使う場合
プロジェクト\app\src\main\java\asia\remix\myapplication\MainActivity.java
package asia.remix.myapplication;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import java.util.Map;
public class MainActivity extends AppCompatActivity{
static String[] strPermission = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE
, Manifest.permission.RECORD_AUDIO
};
@Override
protected void onCreate( Bundle savedInstanceState ){
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
if( ContextCompat.checkSelfPermission( this, Manifest.permission.WRITE_EXTERNAL_STORAGE ) != PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission( this, Manifest.permission.RECORD_AUDIO ) != PackageManager.PERMISSION_GRANTED
){
launcher.launch( strPermission );
}
}
ActivityResultLauncher<String[]> launcher = registerForActivityResult(
new ActivityResultContracts.RequestMultiplePermissions()
, isGranted -> {//★
boolean allGranted = true;
for( String key : isGranted.keySet() ){
Log.d( "■", "onActivityResult()" + key + ":" + isGranted.get( key ) );
if( ! isGranted.get( key ) ){
allGranted = false;
}
}
if( ! allGranted ){
Toast.makeText( MainActivity.this, "must WRITE_EXTERNAL_STORAGE, RECORD_AUDIO", Toast.LENGTH_SHORT ).show();
finish();
}
}
);
}
上記ラムダ式では
, (Map<String, Boolean> isGranted) -> {が省略。
●ラムダ式を使わない場合
package asia.remix.myapplication;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import java.util.Map;
public class MainActivity extends AppCompatActivity{
static String[] strPermission = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE
, Manifest.permission.RECORD_AUDIO
};
@Override
protected void onCreate( Bundle savedInstanceState ){
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
if( ContextCompat.checkSelfPermission( this, Manifest.permission.WRITE_EXTERNAL_STORAGE ) != PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission( this, Manifest.permission.RECORD_AUDIO ) != PackageManager.PERMISSION_GRANTED
){
launcher.launch( strPermission );
}
}
ActivityResultLauncher<String[]> launcher = registerForActivityResult(
new ActivityResultContracts.RequestMultiplePermissions()
, new ActivityResultCallback<Map<String, Boolean>>(){//★
public void onActivityResult( Map<String, Boolean> isGranted ){
boolean allGranted = true;
for( String key : isGranted.keySet() ){
Log.d( "■", "onActivityResult()" + key + ":" + isGranted.get( key ) );
if( ! isGranted.get( key ) ){
allGranted = false;
}
}
if( ! allGranted ){
Toast.makeText( MainActivity.this, "must WRITE_EXTERNAL_STORAGE, RECORD_AUDIO", Toast.LENGTH_SHORT ).show();
finish();
}
}
}
);
}