ウェブアプリケーション,インジェクション,コマンドインジェクション

Androidアプリ開発 電話機能偏

通話履歴を表示する

Displaying the Call Log

電話のすべてのコールアクティビティは、
コンテンツプロバイダのcall_logに記録されてます。
そのため、もしすべての受信、発信または
不在着信などに関する詳細が欲しければ、それらの情報を得るために、
コンテンツプロバイダに問い合わせることができます。
コールログの詳細を得るためには、
コンテンツプロバイダに問合せ、Cursorオブジェクトを使っての
結果を通して繰り返していきます。
下記にあるコードはすべての通話詳細を検索し、
日付ごとに並べています。
このコードはそれぞれの通話の詳細、ID、電話番号、通話日付、
通話のタイプ、通話が承認されているかどうかを印刷します。

package net.learn2develop.calllogs;

import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity{

  @Override
  public void onCreate(Bundle savedInstanceState){
   setContentView(R.layout.activity_main);

   GetCallLogs();
  }

  private void GetCallLogs(){
   final String[] projection = null;
   final String selection = null;
   final String[] selectionArgs = null;
   final String sortOrder = android.provider.Calllog.Calls.DATE + "DESC";
   Cursor cursor = null;
   try{
    cursor = this.getrContentResolver().query(
       Uri.parse("content://call_log/calls"),
       projection,
       selection,
       selectionArgs,
       sortOrder);
    while (cursor.moveToNext()){
     //---id---
     String callLogID = cursor.getString(cursor.getColumnIndex(
          android.provider.CallLog.Calls._ID));
     //---phone number---
     String callNumber = cursor.getString(cursor.getColumnIndex(
          android.provider.CallLog.Calls.NUMBER));
     //---date of call---
     String callDate = cursor.getString(cursor.getColumnIndex(
          android.provider.CallLog.Calls.DATE));
     //---1-incoming; 2-outgoing; 3-missed;---
     String callType = cursor.getString(cursor.getColumnIndex(
          android.provider.CallLog.Calls.TYPE));
     //---0-call has been acknowledged; 1-call
     //has not been acknowledge---
     String isCallNew = cursor.getString(cursor.getColumnIndex(
          android.provider.CallLog.Calls.NEW));

     Log.d("", "callLogID: " + callLogID);
     Log.d("", "callNumber: " + callNumber);
     Log.d("", "callDate: " + callDate);
     Log.d("", "callType: " + callType);
     Log.d("", "isCallNew: " + isCallNew);

     //---check for missed call that has not been acknowledged---
     if (Integer.parseInt(callType) ==
        android.provider.CallLog.Calls.MISSED_TYPE &&
        Integer.parseInt(isCallNew) > 0){
      Log.d("", "Missed Call Found: " + callNumber);
     }
    }
   } catch (Exception ex){
     Log.d("", "ERROR: " + ex.toString());
   } finally{
     cursor.close();
   }
  }
}

上のコードでは、承認されていない不在着信
(例えば、折り返し電話をしていない不在着信など)をチェックし、
それらの電話番号を印刷します。
コンテンツプロバイダにcall_logを問い合わせるために、
AndroidManifest.xmlファイルにREAD_CONTACTSパーミッションを
追加する必要があります。

ホーム
便利堂ロゴ
inserted by FC2 system