我正在尝试使用ActivityResultLauncherwith请求权限ActivityResultsContract.RequestMultiplePermissions。
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.Manifest;
import androidx.activity.result.ActivityResultLauncher;
import.androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
public class MainActivity extends AppCompatActivity {
final String[] PERMISSIONS = {
Manifest.permission.FOREGROUND_SERVICE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_BACKGROUND_LOCATION,
Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
};
private ActivityResultContracts.RequestMultiplePermissions multiplePermissionsContract;
private ActivityResultLauncher<String[]> multiplePermissionLauncher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
multiplePermissionsContract = new ActivityResultContracts.RequestMultiplePermissions();
multiplePermissionLauncher = registerForActivityResult(multiplePermissionsContract, isGranted -> {
Log.d("PERMISSIONS", "Launcher result: " + isGranted.toString());
if (isGranted.containsValue(false)) {
Log.d("PERMISSIONS", "At least one of the permissions was not granted, launching …Run Code Online (Sandbox Code Playgroud)