我正在android中構建一個應用程序,當任何電話打入我的手機時它將執行一個操作。我曾嘗試過使用廣播接收器和電話狀態監聽器。但它不起作用。如果我使用活動,那麼電話狀態監聽器運行良好,但它不適用於廣播接收器。我做錯了什麼?請任何機構幫助....如何在android中檢測電話廣播接收機
感謝&問候
我正在android中構建一個應用程序,當任何電話打入我的手機時它將執行一個操作。我曾嘗試過使用廣播接收器和電話狀態監聽器。但它不起作用。如果我使用活動,那麼電話狀態監聽器運行良好,但它不適用於廣播接收器。我做錯了什麼?請任何機構幫助....如何在android中檢測電話廣播接收機
感謝&問候
希望這將成爲你的目的,
請檢查了這一點。
<receiver android:name="ClassName">
<intent-filter>
<action android:name="android.intent.action.ANSWER">/action>
</intent-filter>
</receiver>
如果您覺得它有用,請不要忘記將其標記爲答案 – 2011-05-13 10:40:15
沒有任何動作.ANSWER – 2013-05-13 16:48:55
<receiver android:name="ClassName">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE">/action>
</intent-filter>
</receiver>
它的工作!
以下是來自a Chinese BBS的示例。
public class PhoneStatReceiver extends BroadcastReceiver{
private static final String TAG = "PhoneStatReceiver";
private static boolean incomingFlag = false;
private static String incoming_number = null;
@Override
public void onReceive(Context context, Intent intent) {
//如果是撥打電話
if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
incomingFlag = false;
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.i(TAG, "call OUT:"+phoneNumber);
}else{
//如果是來電
TelephonyManager tm =
(TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
switch (tm.getCallState()) {
case TelephonyManager.CALL_STATE_RINGING:
incomingFlag = true;//標識當前是來電
incoming_number = intent.getStringExtra("incoming_number");
Log.i(TAG, "RINGING :"+ incoming_number);
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
if(incomingFlag){
Log.i(TAG, "incoming ACCEPT :"+ incoming_number);
}
break;
case TelephonyManager.CALL_STATE_IDLE:
if(incomingFlag){
Log.i(TAG, "incoming IDLE");
}
break;
}
}
}
}
將其註冊在您的AndroidManifest.xml
。
<receiver android:name=".filter.PhoneStatReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
這適用於Pixel XL上的Android 7.1.1。謝謝。 – Billy 2017-02-01 17:15:54
我最初經歷了同樣的事情,但後來我將以下權限添加到我的清單中。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
當然在我的代碼中,我只是在接到電話時顯示烤麪包。 因此,您可能需要添加與您的需求相對應的其他權限。
發表您的廣播 – ingsaurabh 2011-05-13 10:38:50
我不知道你的代碼的代碼,但我剛纔用這個:http://androidexample.com/Incomming_Phone_Call_Broadcast_Receiver__-_Android_Example/index.php?view=article_discription&aid=61&aaid=86 它使用廣播接收器。注意:我剛剛在Android 4.4.2上試了一下(我知道這是一個老問題,但這可能有助於某人某天) – OmarBizreh 2014-04-15 16:51:53