Android продолжить после проверки и запроса разрешения - PullRequest
1 голос
/ 01 мая 2020

Я знаю, что ответили на многие вопросы, касающиеся проверки и запроса разрешения, а также обработки их ответа, и мне это ясно. Но что меня немного смущает, так это если мы проверяем одно и то же разрешение на две разные вещи, как мы продолжим задачу после получения разрешения?

Например, у меня есть recycleView, и в моем адаптере у меня есть код для двух кнопки, одна будет сохранять файл, а другая будет сохранять и открывать действия, чтобы поделиться этим файлом с другим приложением.

MyRecycleAdapter {

Context context:

save.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
           if(checkPermission()) {
               have permission
               save file to disk
          } else {
              requestPermission
               save file to disk
           }  
     }
});
share.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
           if(checkPermission()) {
               have permission
               save file to disk
               open share activity using (context)
          } else {
              requestPermission
               save file to disk
              open share activity using (context)
           }  
     }
});

}

1 Ответ

3 голосов
/ 01 мая 2020

Используйте разные коды запросов для управления тем, что происходит после получения разрешения:

final int SAVE = 1;
final int SAVE_AND_SHARE = 2;

if (ActivityCompat.checkSelfPermission(this,
  Manifest.permission.WRITE_EXTERNAL_STORAGE)
  != PackageManager.PERMISSION_GRANTED
) {
  ActivityCompat.requestPermissions(
    this,
    new String[]{
      android.Manifest.permission.WRITE_EXTERNAL_STORAGE
    },
    [either SAVE or SAVE_AND_SHARE]);
} else {
  //permission is already granted, continue
}


@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] 
  grantResults) {
  if (requestCode == SAVE) {
    if (grantResults.length > 0
      && grantResults[0] == PackageManager.PERMISSION_GRANTED
    ) {
      //save
    } else {
      //permission was denied
    }
  } else if (requestCode == SAVE_AND_SHARE) {
    if (grantResults.length > 0
      && grantResults[0] == PackageManager.PERMISSION_GRANTED
    ) {
      //save and share
    } else {
      //permission was denied
    }
  }
}
...