Android で通知＆プリインストールの設定アプリから自作アプリを起動してみた件

# 以前から気になっていた事 :thought_balloon:

---

## :one: 通知 ([Notification](https://developer.android.com/guide/topics/ui/notifiers/notifications.html)) について

---

# Android 5.0 〜 6.0.1 ([Lollipop](https://developer.android.com/about/versions/lollipop.html) & [Marshmallow](https://developer.android.com/about/versions/marshmallow/index.html)) の場合

---

# 通知を長押し :point_up_2_tone1:

- :gear: が **表示される** 通知と **表示されない** 通知がある

| :gear: あり | :gear: 無し |
|:------:|:-------:|
|![Screenshot_2017-08-14-21-56-04.png](https://qiita-image-store.s3.amazonaws.com/0/6881/6e2ef6a6-462e-6557-ddb8-28c5e040f94c.png)|![Screenshot_2017-08-14-21-55-54.png](https://qiita-image-store.s3.amazonaws.com/0/6881/f931f091-3428-d86c-bf2b-815b10755fc5.png)|

---

# :gear: **設定** > [**アプリの通知**]

- 「アプリの設定」ボタンが **表示される** アプリと **表示されない** アプリがある

| ボタンあり | ボタン無し |
|:------:|:-------:|
|![20170815_203002.jpg](https://qiita-image-store.s3.amazonaws.com/0/6881/5570c279-a2c8-152a-5213-688286f78f6f.jpeg)|![20170815_203757.jpg](https://qiita-image-store.s3.amazonaws.com/0/6881/623b9548-5342-f5fe-80b4-8fc5c76a26d3.jpeg)|

---

# Android 7.0 ([Nougat](https://developer.android.com/about/versions/nougat/index.html)) の場合

---

# 通知をスライド :dash:

- アイコンは :gear: のみ（全アプリ共通）
- :gear: をタップすると **設定** > [**アプリの通知**] に遷移

![Screenshot_20170811-213338.png](https://qiita-image-store.s3.amazonaws.com/0/6881/b89d372b-9b3a-d63d-b7a8-667065d14d6e.png)

---

# :gear: **設定** > [**アプリの通知**]

- :information_source: のアイコンが **表示される** アプリと **表示されない** アプリがある

| :information_source: のアイコンあり | :information_source: のアイコン無し |
|:------:|:-------:|
|![Googleアプリのi.png](https://qiita-image-store.s3.amazonaws.com/0/6881/3f501b36-216d-ee7a-3d0d-32d12709f77d.png)|![Screenshot_20170811-175251.png](https://qiita-image-store.s3.amazonaws.com/0/6881/83cef693-4ca9-c192-4750-c674144eba4a.png)|

（※ :copyright: [Galaxy S8](http://www.galaxymobile.jp/galaxy-s8/)）

---

# Android 8.0 ([Oreo](https://developer.android.com/about/versions/oreo/index.html)) の場合

---

# 通知をスライド :dash:

- アイコンは :gear: と :clock4:（全アプリ共通）
- :gear: をタップすると「アプリの通知カテゴリ」に切り替わる

![Screenshot_1505638863.png](https://qiita-image-store.s3.amazonaws.com/0/6881/ab7e4205-1367-2c55-22c3-548d01ef089a.png)

---

# :gear: **設定** > [**アプリの通知**]

- 「アプリ内のその他の設定」ボタンが **表示される** アプリと **表示されない** アプリがある

| ボタンあり | ボタン無し |
|:------:|:-------:|
|![Screenshot_1505640671.png](https://qiita-image-store.s3.amazonaws.com/0/6881/3feab6ba-a8b4-1608-239e-0eda0ec19f66.png)|![Screenshot_1505640682.png](https://qiita-image-store.s3.amazonaws.com/0/6881/550a88eb-1bbf-d17d-fced-b97dc4224cc5.png)|

---

# Android バージョン別まとめ

- 5.0 〜 6.0.1 ([Lollipop](https://developer.android.com/about/versions/lollipop.html) & [Marshmallow](https://developer.android.com/about/versions/marshmallow/index.html))
  - 通知の :gear: アイコン
  - **設定** > [**アプリの通知**] の「アプリの設定」ボタン
- 7.0 ([Nougat](https://developer.android.com/about/versions/nougat/index.html))
  - **設定** > [**アプリの通知**] の :information_source: アイコン
- 8.0 ([Oreo](https://developer.android.com/about/versions/oreo/index.html))
  - **設定** > [**アプリの通知**] の「アプリ内のその他の設定」ボタン

---

# タップすると :point_down_tone1:

---

# 例：[Google](https://play.google.com/store/apps/details?id=com.google.android.googlequicksearchbox) アプリの場合

- [Google](https://play.google.com/store/apps/details?id=com.google.android.googlequicksearchbox) アプリ内の通知に関する設定画面に遷移する（Android 7.0）

<img src="https://qiita-image-store.s3.amazonaws.com/0/6881/743b5df0-8854-e7a3-3fc8-fda3d75a1cee.png" width="350px" />

---

# 自作アプリへのリンクを表示する方法を調査してみました :computer:

---

## 記事がありました :eyes:

- [Android 5.0 LollipopでのNotificationについて - Qiita](http://qiita.com/mstssk/items/099a22976dd2dccdd1ea)

## 方法

- `AndroidManifest.xml` に `<intent-filter>` を追加

``` AndroidManifest.xml
……
<activity android:name=".NotificationPreferencesActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" />
    </intent-filter>
</activity>
……
```

---

## [`INTENT_CATEGORY_NOTIFICATION_PREFERENCES`](https://developer.android.com/reference/android/app/Notification.html#INTENT_CATEGORY_NOTIFICATION_PREFERENCES) について

- 通知に関する設定の `Activity` に指定する
- Android 5.0 ([Lollipop](https://developer.android.com/about/versions/lollipop.html)) から有効 :lollipop:

## 対応アプリ

- [Twitter](https://play.google.com/store/apps/details?id=com.twitter.android)
    - 「リツイート」や「いいね」など受信するプッシュ通知の選択が可能
    - バイブレーション・着信音・通知ランプに関する設定も :u6709:
    - 未ログイン or ログイン済みの場合で遷移が異なる

---

# もう１つ気になっていたこと :thinking:

---

## :two: 設定アプリ (com.android.settings) の [データ使用量] について

---

# :gear: **設定** > [**アプリケーション情報**]

- [**モバイルデータ**] をタップ :point_down_tone1:

<img src="https://qiita-image-store.s3.amazonaws.com/0/6881/1ad1f936-e140-8efe-050e-629c353c8d3b.png" width="350px" />

---

# > [**モバイルデータ**] > [**データ使用量**]

- 「アプリの設定を表示」ボタンが **表示される** アプリと **表示されない** アプリがある

| ボタンあり | ボタンなし |
|:------:|:-------:|
|![データ使用量リンク.png](https://qiita-image-store.s3.amazonaws.com/0/6881/9dd039f5-70ba-81d4-43e2-325574c08453.png)|![Screenshot_20170811-175331.png](https://qiita-image-store.s3.amazonaws.com/0/6881/c6da7f0d-ba8b-9a3f-190e-139df58ca712.png)|

---

# 「アプリの設定を表示」をタップすると :point_down_tone1:

---

# 例：[YouTube](https://play.google.com/store/apps/details?id=com.google.android.youtube) アプリの場合

- [YouTube](https://play.google.com/store/apps/details?id=com.google.android.youtube) アプリ内の設定画面に遷移

<img src="https://qiita-image-store.s3.amazonaws.com/0/6881/4e7c58de-8c0f-5b72-96bf-203344bccb42.png" width="350px" />

---

# [YouTube](https://play.google.com/store/apps/details?id=com.google.android.youtube) の [**設定**] > [**全般**] をタップ :point_down_tone1:

- モバイルデータに関する設定項目がある

<img src="https://qiita-image-store.s3.amazonaws.com/0/6881/3714a92a-b41b-a687-fee0-ec400ce29629.png" width="350px" />

---

# 「アプリの設定を表示」ボタンを有効にする方法を調べてみました :computer:

---

## 発見しました :eyes:

- [Yukiの枝折: Android:ACTION_MANAGE_NETWORK_USAGEのサポート](http://yuki312.blogspot.jp/2012/07/androidactionmanagenetworkusage.html)

## 方法

- `AndroidManifest.xml` に `<intent-filter>` を追加

``` AndroidManifest.xml
……
<activity android:name=".ManageNetworkUsageActivity">
    <intent-filter>
        <action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
……
```

---

## [`ACTION_MANAGE_NETWORK_USAGE`](https://developer.android.com/reference/android/content/Intent.html#ACTION_MANAGE_NETWORK_USAGE) について

- ネットワーク利用に関する設定の [`Activity`](https://developer.android.com/reference/android/app/Activity.html) に指定する
- Android 4.0 (Ice Cream Sandwich) から有効 :ice_cream:

## 対応アプリ

- Google Play ストア
  - アプリの自動更新に関する設定が可能
  - （自動更新にするとデータ通信料が発生する場合がある）

---

# まとめ

- [Google 謹製のアプリ](https://play.google.com/store/apps/dev?id=5700313618786177705)以外でサポートされているケースは僅か
- マイナー機能なので対応することで得をするユーザーは少ない（？）
  - Android 熟練者の利便性向上には繋がりそう

---

# :end:

---

# 近況

- 最近、上司から「まだ [Kotlin](https://kotlinlang.org/) やらないの？」という圧を感じます

![Screenshot_20170816-023704.png](https://qiita-image-store.s3.amazonaws.com/0/6881/774f94a7-4681-d7dc-61a6-03400207fd8b.png)

※ 2017 年 5 月 12 日放送の『[クレイジージャーニー](http://www.tbs.co.jp/crazyjourney/)』でロシアの Kotlin 島に上陸していました :motorboat:

---

# :end: