2016-08-16 12 views
1

実行時にアクセス権を要求しています。方法はrequestPermissions()です。アクティビティを通過する必要があります。しかし、onClick()に電話すると、私はthisを通過することはできません。だから、私はそれをどのように通すのですか? 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; 
      } 
     } 
    } 

私は活動がonRequestPermissionsResult()である必要があるところ、申し訳ありませんが、これは簡単な修正であれば、私は、Androidアプリの開発にかなり新しいです。

答えて

1

簡単な答えは「こちら」はここのボタンを指します。活性を通過するために 2つの方法があります

  • LoginActivity.thisスレについて]

  • getApplicationcontext() [ここでアプリケーション・コンテキストを渡すために]

+0

'LoginActivity.this'正しい解決策でした。 'ActivityCompat.requestPermissions()'は 'Context'ではなく' Activity'を必要とするため、 'getApplicationContext()'は動作しません。 –

+0

うれしかったです。乾杯! – sumandas

関連する問題