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`)権限のような通常の権限は、
インストール時に自動的に付与され、特別なリクエストは不要です。
コメント
コメントを投稿