android 6.0以降 危険なpermissionと開発者モードへのデバグビルドのインストール

androidのアプリ作成のうち permissionについてお尋ねします。


ネットワークの使用などの権限が必要なものについては
リリース用にビルドしたものをインストールすると、
そのアプリ起動時、あるいは google play からのインストール時に
必要な権限の確認が表示されるのでしたでしょうか?

それと、
androidデバイスが開発者モードになっていて
そのデバイスにandroid studioからインストールする際は

権限のユーザーへの確認、というのは

activity のコード内から

ActivityCompat.requestPermissions(
this, permissions, REQUEST_CODE)

などを実行してユーザーに承認してもらう、という流れになるのでしょうか?

つまり、訪ねたいのは
開発者モードのデバイスに android studioから
デバグ目的などでアプリをインストールするときは
permissionは取得済み、ということでしょうか?




Androidアプリにおける権限(Permission)の扱いについて
以下の質問にお答えします。

---

### **1. リリース用アプリの場合**
Google Playからダウンロード・インストールする際に、
アプリが必要とする権限は次のタイミングで確認されます:

- **Android 5.1以前の場合**:
アプリのインストール時に、
すべての権限が一括でユーザーに表示されます。
ユーザーがそれを承諾しない限りインストールは進みません。


- **Android 6.0以降の場合**:

必要な権限のうち、
**危険な権限 (Dangerous Permissions)** に分類されるもの
(例:カメラ、位置情報、連絡先など)は、
**アプリ実行中にユーザーに承認を求める仕組み
(Runtime Permissions)**が導入されています。
ネットワーク(INTERNET)権限のように危険ではない権限は、
インストール時に自動的に付与され、ユーザーへの確認は不要です。

---

### **2. 開発者モードのデバイスにAndroid Studioからアプリをインストールする場合**

この場合、次のポイントがあります:

#### **インストール時**

- **デバッグビルドのアプリ**では、通常、
`AndroidManifest.xml` に記載された権限が自動的に付与されます。
ユーザーに明示的な許可を求めることはありません。

#### **実行時の権限リクエスト**

- 危険な権限については、**アプリ内のコードで
明示的にユーザーに許可を求める必要があります**。

そのため、以下のようなコードを使用して権限をリクエストします:


```kotlin
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.CAMERA),
REQUEST_CODE
)
```

- ユーザーがこのダイアログで権限を許可しない限り、
その権限はアクティブになりません。

---

### **3. デバッグ時の注意点**
デバッグ目的でアプリをインストールしても、
以下のことを理解しておく必要があります:

- **権限は取得済みではない**:

Android Studioからデバイスにアプリをインストールしただけでは、
危険な権限は「要求された状態」にはなりません。

ユーザーに許可を求めるプロンプトを表示するコードが必要です。


- **アプリの動作確認の際はリクエストを実装する必要がある**:

`ActivityCompat.requestPermissions()` を使用して、
ユーザーから権限を取得するフローをテストする必要があります。

---

### **まとめ**

開発者モードのデバイスにAndroid Studioから
アプリをインストールした場合でも、
**危険な権限は自動的に付与されるわけではありません**。

実行時にアプリ内でリクエストを行う必要があります。
一方で、ネットワーク(`INTERNET`)権限のような通常の権限は、
インストール時に自動的に付与され、特別なリクエストは不要です。



コメント