それをリフレッシュすることはできません着信呼び出し画面ですが、自分のデータベースをフェッチすることで希望の名前を表示できます...そのためには、自分のスレッドを着信呼び出し画面で実行する必要があるため、ここに例があります
あなたの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);
}
}
[同様の質問](http://stackoverflow.com/q/2385685/1321873)を見てみましょう、答えは同様にあなたの場合にも適用可能である – Rajesh
@Rajesh応答に感謝します。しかし、私はinCall画面を置き換えることを望んでいません..私の目的は、更新された連絡先名でincall画面を更新することでした。 – thoma