2012-03-05 8 views
2

電話が鳴ると、2つのボタンと発信者情報が自動的にポップアップする画面が表示されます。この画面はどこから来たのですか?どのような活動ですか?私はそれがandroid.intent.action.PHONE_STATEという意図から呼ばれていることを知っています。しかし、アクティビティ名は何ですか?どのようにアクティビティ名を取得できますか? enter image description here電話が鳴っているときに呼び出されるアクティビティの名前は何ですか

+1

なぜこれが必要ですか? – asktomsk

+0

ブロードキャスト送信者は、着信コールを取得するために番号とブロードキャスト受信者を呼び出します。上の画面の活動名は必要ありません。 –

答えて

1

ここには、着信時に何らかのアクションを実行するのに便利なリンクがいくつかあります。 1)link 2)link

<activity android:name=".AcceptReject" android:theme="@android:style/Theme.NoTitleBar" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.ANSWER" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

着信放送受信機等:

<receiver android:name=".IncomingCallReceiver" > 
     <intent-filter >    
      <action android:name="android.intent.action.PHONE_STATE" /> 
      <action android:name="android.intent.action.NEW_OUTGOING_CALL" />        
     </intent-filter> 
    </receiver> 

IncomingCallReceiverが延びるBroadcastReceiver:

if (intent.getAction() 
      .equals("android.intent.action.NEW_OUTGOING_CALL")) { 
     Log.i("System out", "IN OUTGOING CALL......... :IF"); 
     MyPhoneStateListener phoneListener = new MyPhoneStateListener(
        context); 
      TelephonyManager telephony = (TelephonyManager) context 
        .getSystemService(Context.TELEPHONY_SERVICE); 
      telephony.listen(phoneListener, 
        PhoneStateListener.LISTEN_CALL_STATE); 
    } else {   
      Log.i("System out", "IN INCOMING CALL.........:else:receiver");    


    } 

あなたMyPhoneStateListener

class MyPhoneStateListener extends PhoneStateListener { 
private final Context context; 
private boolean NOTOFFHOOK = false; 
public MyPhoneStateListener(Context context) { 
    this.context = context; 
} 
@Override 
public void onCallStateChanged(int state, String incomingNumber) { 
    switch (state) { 
    case TelephonyManager.CALL_STATE_IDLE: // by default phone is in idle state 
     Log.d("System out", "IDLE"); 
     NOTOFFHOOK = true;  
     break; 
    case TelephonyManager.CALL_STATE_OFFHOOK: // when user receive call this method called 
     Log.d("System out", "OFFHOOK, it flag: " + NOTOFFHOOK); 

     if (NOTOFFHOOK == false) { 
      // do your work on receiving call. 
     } 
     break; 
    case TelephonyManager.CALL_STATE_RINGING: // while ringing 
     Log.d("System out", "RINGING"); 
     // do your work while ringing. 

     break; 
    } 
} 

}

希望します。

+0

ありがとう!私は上記の画面を隠すことができますどのような方法ですか?自分の画面をカスタマイズしたい – user1163234

+0

はい。ブロードバンド・レシーバーからあなたのカスタムデザイン活動を呼び出しました。マニフェストのようなあなたの活動。編集された回答を確認してください。 –

+0

ありがとう!しかし、最初にacceptrejectが上がると、デフォルトの画面が1秒ごとに表示されます(これはstacKと関係があります)。それを回避する方法はありますか?また、カスタマイズできる発信画面はどうですか? – user1163234

関連する問題