2012-05-03 91 views
2

我有一個應用程序來監聽來電。該應用程序擁有一個擁有自己的聯繫人姓名和號碼的數據庫。是否可以刷新inCall屏幕?

當您收到來電時,如果傳入號碼(例如1234)在本地聯繫人數據庫中不可用,應用程序會在其數據庫中檢查它,並在數據庫中存在聯繫人姓名(如果該號碼可用)中找到聯繫人姓名。 (比如說,XYZ)...

我的目標是刷新新的聯繫人姓名並稱門店屏「某某電話。」而不是「1234呼叫..」 ..

是否有可能? ..

+0

看看在[類似的問題(http://stackoverflow.com/q/2385685/1321873),答案是適合你的情況,以及 – Rajesh

+0

@Rajesh感謝您的回覆。但我不想更換inCall屏幕..我的目標是用更新後的聯繫人姓名刷新屏幕界面。 – thoma

回答

0

它無法刷新來電屏幕但你可以通過獲取自己的數據庫......對於u需要運行呼入電話屏幕上烏爾自己的線程顯示所需的名字,我用定時器和計時器任務這樣做這裏是示例

您的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

感謝您的幫助..正如您所提到的,我的情況中唯一的選擇是有一個吐司。我找不到任何方法刷新入口篩子。 – thoma

+0

如果你有更好的解決方案,請分享。 – png

+0

@Preetha或U可以使用ITelephony類來創建你自己的來電Activty,對於u需要添加的.jar framework_intermediates類,全debug.jar – Pradeep