Android 4.3がリリースされて、しばらく時間がたってしまいましたが、Android4.3で2つのパーミッションが追加されました。

jbean_srgb.png

Android Developer SiteのAndroid 4.3APIsの最後の方にちょろっとだけ記載があります。

BIND_NOTIFICATION_LISTENER_SERVICEと、SEND_RESPOND_VIA_MESSAGEの2つが追加されたわけですが、ぶっちゃけこれらのパーミッションは、普通のアプリケーションを使用する人は気にしなくてもいいと思います。
BIND_NOTIFICATION_LISTENER_SERVICEが、4.3で新規に追加された、NotificationListenerService の機能を使う時に使うパーミッションで、SEND_RESPOND_VIA_MESSAGEが4.3で仕様変更(解放された)電話着信のQuick response機能を使う時に使用するものです。
また、両方ともsignature系パーミッションですので、一般アプリがuses-permissionで指定して使うものではありません。まぁ、実際にこれらの機能を実装するときに、サンプルコード等にあたると思いますので、その時に調べればいいレベルだと思います。

とはいえ、脆弱性検知ツールTao RiskFinder等作っていますから、解説します。

BIND_NOTIFICATION_LISTENER_SERVICE

Android4.3で追加された、NotificationListenerServiceを使用するときに利用するパーミッション。

  • name
    android.permission.BIND_NOTIFICATION_LISTENER_SERVICE
  • protectionLevel
    signature
  • permissionGroup
    指定なし
  • label
    bind to a notification listener service

    通知リスナーサービスにバインド
  • description
    Allows the holder to bind to the top-level interface of a notification listener service. Should never be needed for normal apps.

    通知リスナーサービスのトップレベルインターフェースにバインドすることを所有者に許可します。通常のアプリでは不要です。
  • NotificationListenerServiceは、Android 4.3 (API Level18)で新たに追加されたサービスです。

    Notificationバー表示領域(通知バー)をごにょごにょいじるようなアプリは、アクセシビリティサービスを利用してという、裏ワザ的なやり方とかしかなかったのですが、素直に障れるようになりました。

    注意事項としては、Notificationバーを障りたいアプリが、uses-permissionを使ってBIND_NOTIFICATION_LISTENER_SERVICEを記載するわけではありません。
    このBIND_NOTIFICATION_LISTENER_SERVICEは、signatureパーミッションなので一般のアプリがuses-permissionに記載しても意味がありません。

    下記のように、BIND_NOTIFICATION_LISTENER_SERVICEパーミッションを持っているアプリからのみ、自分が作成したサービスを呼び出すように作成することで、悪意を持ったアプリから呼び出されるのを禁止するときに使用します。

    
    <service android:name=".NotificationListener"
    android:label="@string/service_name"
    android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
    <intent-filter>
    <action android:name="android.service.notification.NotificationListenerService" />
    </intent-filter>
    </service>
    

    残念なのは、uses-permissionで指定する物ではないので、このアプリはNotificationバーいじる!って事がユーザに通知されないことです。日本ではNotiicationバーに広告とかを表示するのは良くない事と認識されているだけにちょっと残念です。

    SEND_RESPOND_VIA_MESSAGE

    Android OS4.0で追加された、「Quick response」の機能変更に際して作成されたパーミッション

  • name
    android.permission.SEND_RESPOND_VIA_MESSAGE
  • protectionLevel
    signature|system
  • permissionGroup
    android.permission-group.MESSAGES
  • label
    send respond-via-message events

    メッセージ応答イベントの送信
  • description
    Allows the app to send requests to other messaging apps to handle respond-via-message events for incoming

    着信時にメッセージ応答イベントを処理するよう他のSMSアプリにリクエストを送信することをアプリに許可します。
  • クイックレスポンス機能は、電話がかかってきた時に、端末のロックを解除せずにテクストメッセージで着信に応答できる機能です。今までこの機能はシステムアプリでしか使用できませんでしたが、4.3で一般のアプリでも使用できるようになりました。
    この機能を一般アプリで実装するときに、このパーミッションを使用します。

    注意事項としては、クイックレスポンスを実装するアプリが、uses-permissionを使ってSEND_RESPOND_VIA_MESSAGEを記載するわけではありません。
    このSEND_RESPOND_VIA_MESSAGEは、signature|systemパーミッションなので一般のアプリがuses-permissionに記載しても意味がありません。

    下記のように、SEND_RESPOND_VIA_MESSAGEパーミッションを持っているアプリからのみ、自分が作成したサービスを呼び出すように作成することで、悪意を持ったアプリから呼び出されるのを禁止するときに使用します。

    
    <service android:name=".ui.NoConfirmationSendService"
    android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
    android:exported="true" >
    <intent-filter>
    <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="sms" />
    <data android:scheme="smsto" />
    </intent-filter>
    </service>
    

    ブログ内の関連する記事