浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【androidjava】パーミッションをonStartメソッド内に書く

意図的にパーミッションをoffにしたときの対策として

パーミッションを再度促す処理を作りました。

 

アプリで設定したパーミッションは設定から簡単に変えられるのですが、

offにされてしまうとアプリを使う上で困ってしまう理由上onStart

で再許可をして許可しなければ機能を使うことができなくするように

しました。

 

onstartは、アプリがバックグラウンドに移った後にまたそのアプリに

復帰するときに呼ばれるライフサイクルのことです。

 

 

 

 

これが呼ばれている間はユーザーはアプリのアクティビティが

見えていない状態になります。その中でパーミッション許可を

させようという訳です。

 

</pre>
<pre>@Override
protected void onStart() {
    super.onStart();
    if (Build.VERSION.SDK_INT >= 23) {
        if (ActivityCompat.checkSelfPermission(this,
                android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
                && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
            userSetting();
        }else {
            requestPermission();
        }
    }else{
        userSetting();
    }
}

private void requestPermission() {
    String[] permissions = { Manifest.permission.CAMERA,
            Manifest.permission.WRITE_EXTERNAL_STORAGE };
    ActivityCompat.requestPermissions(this, permissions, REQUEST_PERMISSION);
}</pre>
<pre>@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == REQUEST_PERMISSION) {
        // 使用が許可された
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
            // 許可された
            userSetting();
        } else {
            Toast.makeText(this, "許可されませんでした。", Toast.LENGTH_SHORT).show();
            userSetting();
        }
    }
}</pre>
<pre>

 

ここで、offにしたパーミッションをonにすることで直ちにアプリを

正常に使うことができるようになります。

 

 

  • この記事いいね! (0)