2012-05-03 9 views
2

私は着信を聴くアプリケーションを持っています。アプリケーションには、独自の連絡先名と番号を持つデータベースがあります。「コール」画面を更新することはできますか?

ネイティブ連絡先データベースで着信番号(1234など)が利用できない場合、アプリケーションはデータベースをチェックインし、番号が利用可能であればデータベースから連絡先名を見つけます。 (たとえば、XYZ)...

私の目的は、新しい連絡先の名前を言ってincallの画面をリフレッシュするためにある、「XYZ通話を..」の代わりに「1234呼び出し..」..

はそれが可能です? ..

+0

[同様の質問](http://stackoverflow.com/q/2385685/1321873)を見てみましょう、答えは同様にあなたの場合にも適用可能である – Rajesh

+0

@Rajesh応答に感謝します。しかし、私はinCall画面を置き換えることを望んでいません..私の目的は、更新された連絡先名でincall画面を更新することでした。 – thoma

答えて

0

それをリフレッシュすることはできません着信呼び出し画面ですが、自分のデータベースをフェッチすることで希望の名前を表示できます...そのためには、自分のスレッドを着信呼び出し画面で実行する必要があるため、ここに例があります

あなたのBroadcastReceiverは含まなければなりません

ServiceReceiver extends BroadcastReceiver{ 

@Override 
public void onReceive(final Context context, Intent intent) { 

    Bundle extras = intent.getExtras(); 

    if (extras != null) { 
     String state = extras.getString(TelephonyManager.EXTRA_STATE); 
     incomingNumber = extras.getString("incoming_number"); 
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 

/********** Fetch name from your DB ************/ 

if (Name not present in your DB) 
{ 
return; 
} 

if(present){ 

incomingCallTimer = new Timer(); 
ToastMessageHandler messageHandler = new ToastMessageHandler(context, contactName);     
incomingCallTimer.schedule(new ToastTimer(messageHandler), 1000, 2000); 

} 
} 

if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) { 
      // callActionHandler.removeCallbacks(runRingingActivity); 
      // setResultCode(Activity.RESULT_CANCELED); 
      try{ 
      incomingCallTimer.cancel(); 
      } catch (Exception e) { 

      } 
     } 
} 

class ToastTimer extends TimerTask { 

    ToastMessageHandler messageHandler; 

    public ToastTimer(ToastMessageHandler messageHandler) { 
     this.messageHandler = messageHandler; 
    } 

    @Override 
    public void run() { 

     Message message = Message.obtain(messageHandler); 
     messageHandler.sendMessage(message); 



    } 

    } 
} 

トーストHandlerクラス

public class ToastMessageHandler extends Handler{ 

Context context; 
String message; 

public ToastMessageHandler(Context _context , String _message){ 
    this.context = _context; 
    this.message = _message; 

} 
@Override 
public void handleMessage(Message msg) { 
    Toast.makeText(msg); 
} 
} 
+0

助けてくれてありがとう..私の状況で唯一の言及したように、トーストを持つことです。私はincall screeをリフレッシュする方法を見つけることができませんでした。 – thoma

+0

あなたがより良い解決策を持っていれば分かち合ってください。 – png

+0

@PreethaまたはUは、ITelephonyクラスを使用して自分の着信呼び出しActivtyを作成できます。そのためには.jarを追加する必要があります。framework_intermediates-classes-full-debug.jar – Pradeep

関連する問題