1

不在着信があったときにアクティビティを開始したいのですが、通話履歴から最新の不在着信エントリを読み取ることができず、代わりに現在のエントリの前のエントリを読み取ります。電話の状態がアイドル状態のときに読んでいます。

例: 11:10 と 11:11 の 2 つの不在着信エントリがあるとします。12:12 に不在着信がありました。私のアクティビティは、12:12、11:11、11:10 に着信した不在着信を表示する必要があります。むしろ、11:11,11:10 と表示されます。最新のエントリがありません。私は何をすべきか?私はサービスを使用しており、通話履歴、電話の状態を読んでいます。

Cursor c = getContentResolver().query(allCalls, null, null, null, order); 
  if (c.moveToFirst()) { 
    do{ 
      // getting number,type,ack etc} 
    while (c.moveToNext()); }
4

2 に答える 2

0

TelephonyManagerPhoneStateListenerを使用してリッスンする必要があります。

このコードは、その方法を示しています。

if(lastStart == TelephonyManager.CALL_STATE_RINGING)
{
    long now = System.currentTimeMillis();
    long duration = (now-ringStartTime)/1000;
    bindService.AddMissCallInfo(ringPhoneNumber, ringStartTime, duration);
    Log.i(Constants.Tag,"service add miss call!");
}

コードの抜粋: http://code.google.com/p/android-miss-call/source/browse/trunk/src/com/call/DialPhoneStateListener.java?r=3

于 2012-11-23T20:22:46.657 に答える
0

このように使えます。

      c=mContext.getContentResolver().query(CallLog.Calls.CONTENT_URI, projection, null, null, CallLog.Calls._ID + " DESC");
      if(c.getCount()!=0){
                c.moveToFirst();
                 lastCallnumber = c.getString(0);
                 lastCallnumber=FormatNumber(lastCallnumber);                     
                 String type=c.getString(1);
                 String duration=c.getString(2);
                 String name=c.getString(3);
                 String id=c.getString(4);
                 System.out.println("CALLLLing:"+lastCallnumber+"Type:"+type+"\t id:"+id);
 if(type.equals("3")){
    //you can get last missedcall here
 }

参考になるかもしれませんので試してみてください。

于 2013-03-04T13:01:19.363 に答える