2

着信をリッスンするアプリケーションがあります。アプリケーションには、独自の連絡先の名前と番号を含むデータベースがあります。

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

私の目的は、「1234calling..」ではなく「xyzcalling..」という新しい連絡先名でインコール画面を更新することです..

出来ますか??..

4

1 に答える 1

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);



    }

   }
}

トーストハンドラークラス

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);
}
}
于 2012-05-03T09:59:42.727 に答える