mucchinのAndroid戦記

通話ログのパーミッション

Androidから、通話ログの情報を取得したいけど、何のパーミッションを設定したらいいの?

Androidアプリから、通話ログ(音声発信、音声着信の履歴)の情報を取得するには、コンテントプロバイダという機能を使います。
コンテントプロバイダの基本的な使い方は、ここでは説明を省きます。


通話ログの情報を取得するには、getContentResolver()というActivityクラスのメソッドで取得したContentResolverのquery()の第一引数、つまりURIに、CallLog.Calls.CONTENT_URIを指定します。
わかりにくいですが、例えば以下のような感じです。
Cursor c = getContentResolver().query(
    CallLog.Calls.CONTENT_URI,
    (以下の引数は省略します。)
)

これでAndroidアプリを動かすと、SecurityExceptionが発生します。
その為、パーミッションを設定しなければならない事がわかります。
で、以前紹介したパーミッションの設定方法で、該当しそうなパーミッションを探します。
しかし、、、
「CallLog」という文字が含まれているような、それっぽい名前がありません・・・。


こういうときは、ログを見てみましょう。
SecurityExceptionが発生しているログを見ると、以下のように出力されています。


java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.CallLogProvider uri content://call_log/calls from pid=xxx, uid=xxxxx requires android.permission.READ_CONTACTS


あ、そっか。
android.permission.READ_CONTACTSを設定すればいいのか!
と、わかります。


今回は、通話ログのパーミッションを例に挙げてみましたが、何のパーミッションを与えていいかわからないときは、ログに答えが書いていますので、見てみてください。
AndroidのAPIリファレンスで探すのは至難の業だと思います・・・。


スポンサーリンク

URL :
TRACKBACK URL :

Comments & Trackbacks

  • Comments ( 0 )
  • Trackbacks ( 1 )

No commented yet.

Leave a Reply

*
*
* (公開されません)

CAPTCHA


*

Return Top