2016-08-16 96 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

相关问题