2016-08-16 2 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 App развития.

ответ

1

Простой ответ «это» относится к кнопке здесь. Для того, чтобы пройти деятельность Есть два способа:

  • LoginActivity.this [точно]

  • getApplicationcontext() [В случае сдавшие контекст приложения]

+0

'LoginActivity.this' было правильным решением. 'getApplicationContext()' не работает, потому что 'ActivityCompat.requestPermissions()' требует 'Activity', а не' Context'. –

+0

Рад, что это помогло. Ура! – sumandas

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