ページの先頭行へ戻る
Interstage Mobile Application Server V1.3.0 アプリケーション開発ガイド
FUJITSU Software

3.3.7.2 APIに必要なパーミッションの取得とチェック

認証、SLS、プッシュのAPIに必要なパーミッションを取得し、許可されているかチェックします。

具体的には取得したパーミッションをAndroidが用意しているメソッドを使って、チェックし、必要に応じて、パーミッションの要求処理を行います。

以下のような流れになります。

  1. PermissionManager#getPermissionsメソッド(IMAPSのAPI)で認証等のAPIに必要なパーミッションを取得する。
  2. ContextCompat#checkSelfPermissionメソッド(AndroidのAPI)でパーミッションの許可があるかをチェックする。
  3. 許可がない場合、ActivityCompat#requestPermissionsメソッド(AndroidのAPI)でパーミッションの許可を要求する。
  4. 許可要求のダイアログでの選択結果をonRequestPermissionsResultメソッドで受け取ります。
使用例
認証のAPIに必要なパーミッションをチェックするときの使用例を示しています。
public class MainActivity extends Activity {
	・・・
	private static final int MY_PERMISSIONS_REQUEST_CODE = 0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
	・・・
		// Android6.0以上の環境かチェック
		if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
			PermissionManager pm = new PermissionManager(getApplicationContext());
			// パーミッションを取得するAPI
			int[] apis = {PermissionManager.AUTH_API};
			String[] permissions = pm.getPermissions(apis);

			boolean requestPermissionFlag = false;
			List<String> requestPermissionsList = new ArrayList<String>();
			for(String permission : permissions) {
				// PermissionManager#getPermissionsで取得したパーミッションをチェック
				if(ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_DENIED) {
					requestPermissionFlag = true;
					requestPermissionsList.add(permission);
				}
			}
			if(requestPermissionFlag) {
				// 拒否されているパーミッションの許可を要求するダイアログを表示
				ActivityCompat.requestPermissions(this, requestPermissionsList.toArray(new String[0]), MY_PERMISSIONS_REQUEST_CODE);
			}
		}
	}

	@Override
	public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
		if(requestCode == MY_PERMISSIONS_REQUEST_CODE) {
			PermissionManager pm = new PermissionManager(getApplicationContext());
			// 許可要求のダイアログで許可されたかを確認します
			if(pm.checkApi(PermissionManager.AUTH_API, permissions, grantResults) == PermissionManager.API_PERMISSION_GRANTED) {
				// 許可された場合の処理
			} else {
				// 拒否された場合の処理
				// 許可要求のダイアログでの「今後は確認しない」のチェックを確認するには、
				// ActivityCompat#shouldShowRequestPermissionRationaleを利用する
				
			}
		}
	}
}

注意

  • 許可要求のダイアログで拒否されたときに「今後は確認しない」がチェックされたかどうかを確認したいときは、onRequestPermissionsResultメソッドの中で、ActivityCompat#shouldShowRequestPermissionRationaleメソッド(AndroidのAPI)を利用します。