Created
December 5, 2017 14:41
-
-
Save MasayukiFukada/015e49ab3f6865808169a7b15c2e482e to your computer and use it in GitHub Desktop.
Android SDK 23 以降の権限確認サンプルq
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.example.minamo.permissiontest; | |
| import android.Manifest; | |
| import android.content.Context; | |
| import android.content.pm.PackageManager; | |
| import android.support.v4.app.ActivityCompat; | |
| import android.support.v4.content.ContextCompat; | |
| import android.support.v7.app.AlertDialog; | |
| import android.support.v7.app.AppCompatActivity; | |
| import android.os.Bundle; | |
| import android.view.View; | |
| import android.widget.Button; | |
| public class MainActivity extends AppCompatActivity { | |
| final int REQUEST_ACCESS_COARSE_LOCATION = 10; | |
| final int REQUEST_ACCESS_FINE_LOCATION = 11; | |
| @Override | |
| protected void onCreate(Bundle savedInstanceState) { | |
| super.onCreate(savedInstanceState); | |
| setContentView(R.layout.activity_main); | |
| setupButton(); | |
| } | |
| private void setupButton() { | |
| final Context self = this; | |
| Button button = (Button) findViewById(R.id.button); | |
| button.setOnClickListener(new View.OnClickListener() { | |
| @Override | |
| public void onClick(View view) { | |
| // 権限の確認。PERMISSION_GRANTED でない場合、権限リクエストのダイアログが表示される | |
| int coarseLocationPermission = ContextCompat.checkSelfPermission(self, Manifest.permission.ACCESS_COARSE_LOCATION); | |
| int fineLocationPermission = ContextCompat.checkSelfPermission(self, Manifest.permission.ACCESS_FINE_LOCATION); | |
| if (coarseLocationPermission != PackageManager.PERMISSION_GRANTED) { | |
| ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_ACCESS_COARSE_LOCATION); | |
| } | |
| if (fineLocationPermission != PackageManager.PERMISSION_GRANTED) { | |
| ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_ACCESS_FINE_LOCATION); | |
| } | |
| } | |
| }); | |
| } | |
| // 権限ダイアログの表示時や、ボタン押下時に反応する | |
| @Override | |
| public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { | |
| switch (requestCode) { | |
| case REQUEST_ACCESS_FINE_LOCATION: | |
| case REQUEST_ACCESS_COARSE_LOCATION: | |
| if (grantResults.length <= 0) { | |
| return; | |
| } | |
| if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { | |
| // OK | |
| } else if(grantResults[0] == PackageManager.PERMISSION_DENIED) { | |
| // NG | |
| // 「許可しない」を選択した時にも反応 | |
| // リクエストを出すべきか、出しても良いかの判断 | |
| if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION)) { | |
| new AlertDialog.Builder(this) | |
| .setTitle("パーミッション") | |
| .setMessage("リクエストを表示すべき") | |
| .setPositiveButton("OK", null) | |
| .show(); | |
| } else { | |
| new AlertDialog.Builder(this) | |
| .setTitle("パーミッション") | |
| .setMessage("リクエストを表示してはダメ") | |
| .setPositiveButton("OK", null) | |
| .show(); | |
| } | |
| } else { | |
| // ? | |
| } | |
| return; | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment