2016-12-05 23 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

我的意思是,檢查是否授予許可,授予他們,如果尚未,否則skip.Then立即開始活動 –

相關問題