2016-03-29 107 views
2

我需要爲API級別23手動請求權限,以及出現對話窗口和應用程序進入後臺的位置。請求權限窗口強制應用程序停止

這裏是我的代碼:

@Override 
    public void onDialogDone(int dialog, boolean result) { 
     DialogFragment newFragment; 

     switch (dialog) { 
      case EULA_DIALOG: 
       if (result) { 

        boolean numberExists = _appRegistration.checkPhoneNumber(); 
        if (!numberExists) { 
         ActivityCompat.requestPermissions(MainActivity.this, 
           new String[]{Manifest.permission.READ_PHONE_STATE}, 
           MY_PERMISSIONS_PHONE_STATE_READ); 
         return; 
        } else { 
         //do some work 
        } 
       } else { 
        Intent intent = new Intent(...); 
        startActivity(intent); 
        finish(); 


       } 


         break;.... 
    } 
} 

而且,在MainActivity我已經覆蓋了以下方法:

@Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     switch (requestCode) { 
      case MY_PERMISSIONS_PHONE_STATE_READ: {  
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        // do some work 
       } else { 

        // do some work 
       } 

       return; 
      } 

     } 

但如果我點擊「允許」或「拒絕」,這種方法是沒有調用,因爲應用程序處於後臺模式...我記錄和onStop方法,並且在顯示權限窗口後調用它們。

enter image description here

+0

它是否強制停止您的應用程序拒絕? –

+0

並不重要,當顯示對話框時,應用程序將在後臺進行。它不等待答案 – Nininea

+0

我認爲這是problamatic Intent intent = new Intent(...); startActivity(intent); finish(); ,不知道你的if(結果),但其他部分是problamatic –

回答

10

有MainActivity問題,在清單文件中它被配置爲:

機器人:noHistory =「真」

我只是刪除此屬性和啓動應用程序,因爲它是預期工作。

+2

+1這解決了我的問題,似乎很愚蠢的是,這會打破它,沒有另一種方式來請求權限,沒有background'ing應用程序我有一個啓動屏幕,要求位置,但我不想讓他們回到啓動屏幕,因此,我不得不以編程方式進行編程。爲什麼Google ?! – Justin

+0

謝謝。它工作正常。 –

0

嘗試用這種

 if (!numberExists) { 
        ActivityCompat.requestPermissions(getActivity(), 
          new String[]{Manifest.permission.READ_PHONE_STATE}, 
          MY_PERMISSIONS_PHONE_STATE_READ); 
        return; 

這樣,你開始從你的活動的要求和回調將被接收。

+0

這段代碼是無效的:( – Nininea

+0

我改變了它,現在嘗試,如果它不工作,將進一步研究它 –

+0

有什麼不同的問題 –

相關問題