2016-12-05 3 views
0

Я пытаюсь сделать приложение android, где разрешения (для android 6.0 и выше) должны быть заданы перед вызовом следующего действия. Но каждый раз, когда я пытаюсь, он переходит к следующему действию и возвращается, я вижу разрешения спрашивается. Есть ли способ запуска разрешений сначала, и только один раз, когда все закончится, перейдите к следующему действию?Как запустить функции Android в последовательном порядке?

+0

будет отображаться всплывающее окно, если вы не дадите разрешение на предоставление. –

+0

Диалог с разрешением приглашения, вероятно, начинается в порядке, но скрывается за новым действием, поэтому его видимость при закрытии нового действия. –

ответ

0

Начните свою деятельность, только если разрешение предоставлено, иначе запрашиваете разрешение.

if(Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1){ 
    // Use your own required permission here instead of WRITE_EXTERNAL_STORAGE 
    if(!(getActivity().checkSelfPermission("android.permission.WRITE_EXTERNAL_STORAGE") == PackageManager.PERMISSION_GRANTED)){ 
     // Permission not already granted, Asking for permission 
     String[] perms = {"android.permission.WRITE_EXTERNAL_STORAGE"}; 
     requestPermissions(perms, 200); 
    }else { 
     // Permission already granted, starting activity ... 
     Intent i = new Intent(getApplicationContext(), YourActivity.class); 
     startActivity(i); 
    } 
} 

onRequestPermissionsResult() вызывается, когда разрешение предоставлено или отказано в диалоге пользователем. Это можно использовать для обработки события, когда пользователь выбирает параметр из приглашения на разрешение.

/** 
Called when permission granted or denied 
*/ 
@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 

    switch (requestCode){ 
     case 200:{ 
      if(grantResults[0] == PackageManager.PERMISSION_GRANTED){ 
       // Permission granted, starting activity ... 
       Intent i = new Intent(getApplicationContext(), YourActivity.class); 
       startActivity(i); 
      }else{ 
       Toast.makeText(ctx, "Permission Denied by user. Please grant access to continue.", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 
} 
+0

Можно ли предоставить разрешение (если разрешение не указано), а затем начать действие вместо того, чтобы помещать его в оператор else? –

+0

Нет! Разрешение должно быть предоставлено/отклонено пользователем. Следовательно, его называют «разрешением». : D –

+0

Я имел в виду, что, проверьте, предоставлены ли разрешения, дайте их, если они еще не пройдены, в противном случае пропустите. Затем немедленно начните деятельность –

Смежные вопросы