Разрешение Google Maps автоматически

Я выпустил свое приложение несколько дней назад. Теперь проблема в том, что пользователи должны активировать разрешение Google Maps на App Manager. Что я должен сделать, чтобы он активировался автоматически?
У меня есть эти разрешения в файле манифеста Android

<uses-permission android_name="android.permission.READ_PROFILE" />
    <uses-permission android_name="android.permission.INTERNET" />
    <uses-permission android_name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android_name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android_name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android_name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android_name="android.permission.LOCATION" />

2 ответа

  1. ДляAndroid Version >= M, разрешение должно быть спрошеноRuntime, что не может быть сделано автоматически. Общий Runtime Permissionкод запроса:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    
        if (ActivityCompat.checkSelfPermission
                (this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
                &&
                ActivityCompat.checkSelfPermission
                        (this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
        {
            requestPermissions(new String[]{
                    Manifest.permission.ACCESS_COARSE_LOCATION,
                    Manifest.permission.ACCESS_FINE_LOCATION
            }, 1); // 1 is requestCode
            return;
    
        }
    }
    

    Запрос Ручки:

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode) {
    
        case 1:
            if (grantResults[0] != PackageManager.PERMISSION_GRANTED){
                Toast.makeText(your_activity.this,"PERMISSION_DENIED",Toast.LENGTH_SHORT).show();
              }
              else {
                    Toast.makeText(your_activity.this,"PERMISSION_GRANTED",Toast.LENGTH_SHORT).show();
                   // permission granted do something
              }
           break;
       }
    }
    
  2. вы можете установить targetSdkVersionв файле gradle значение 22 или ниже, которое включает все ваши разрешения по умолчанию во время установки, но лучшее решение-обработка Runtime Permissionв коде с targetSdkVersion23 или выше