2016-08-16 100 views
1

我在運行期間請求權限,而對於方法requestPermissions(),我需要通過一個活動。但是,當我撥打onClick()時,我不能只通過this。那麼,我如何傳遞它呢?我如何獲得活動?

的地方,我需要的活動是onRequestPermissionsResult(),在case locationPerm:

public class LoginActivity extends AppCompatActivity implements LocationListener { 

    final int locationPerm = 0; 
    final int cameraPerm = 1; 

    Context context; 
    Activity activity; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login_nav_bar); 

     context = this; 


     int locationPermissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION); 

     int cameraPermissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA); 

     if (locationPermissionCheck != PackageManager.PERMISSION_GRANTED) { 
       ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, locationPerm); 
     } 

     if (cameraPermissionCheck != PackageManager.PERMISSION_GRANTED) { 
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, cameraPerm); 
     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, 
              String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case locationPerm: { 
       // If request is cancelled, the result arrays are empty. 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // permission was granted, yay! Do the 

       } else { // permission denied, 
        new AlertDialog.Builder(this) 
          .setTitle("Location Permission") 
          .setMessage("Message") 
          .setPositiveButton("Set a custom location later", new DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialogInterface, int i) { 
            ActivityCompat.requestPermissions(/* NEED ACTIVITY HERE */, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, locationPerm); 
           } 
          }) 
          .setNegativeButton("Re-Prompt Request", new DialogInterface.OnClickListener() { 
           @Override 
           public void onClick(DialogInterface dialogInterface, int i) { 

           } 
          }) 
          .show(); 
       } 
       return; 
      } 
      case cameraPerm: { 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // permission was granted, yay! Do the 

       } else { // permission denied, 

       } 
       return; 
      } 
     } 
    } 

很抱歉,如果這是一個簡單的解決,我是相當新的Android應用程序開發。

回答

1

簡單的答案是「this」在這裏指的是Button。 爲了通過活性有兩種方法:

  • LoginActivity.this [供確定]

  • getApplicationcontext() [如果通過應用上下文]

+0

'LoginActivity.this'是正確的解決方案。 'getApplicationContext()'不起作用,因爲'ActivityCompat.requestPermissions()'需要一個'Activity'而不是'Context'。 –

+0

很高興幫助。乾杯! – sumandas

相關問題