⑴ 在Android里怎麼調用來電鈴聲監聽
精神也會永遠年青!
⑵ Android 9 來電監聽incomingNumber為空
限制訪問電話號碼
在未首先獲得 READ_CALL_LOG 許可權的情況下,除了應用的用例需要的其他許可權之外,運行於 Android 9 上的應用無法讀取電話號碼或手機狀態。
與來電和去電關聯的電話號碼可在手機狀態廣播(比如來電和去電的手機狀態廣播)中看到,並可通過 PhoneStateListener 類訪問。 但是,如果沒有 READ_CALL_LOG 許可權,則 PHONE_STATE_CHANGED 廣播和 PhoneStateListener 提供的電話號碼欄位為空。
要從手機狀態中讀取電話號碼,請根據您的用例更新應用以請求必要的許可權:
要通過 PHONE_STATE Intent 操作讀取電話號碼,同時需要 READ_CALL_LOG 許可權和 READ_PHONE_STATE 許可權。
要從 onCallStateChanged() 中讀取電話號碼,只需要 READ_CALL_LOG 許可權。 不需要 READ_PHONE_STATE 許可權。
⑶ Android 來電監聽
把你完整log發上來看看啊
⑷ 安卓應用中監聽來電狀態到底是什麼意思
其實是當你使用這些軟體時突然來了電話軟體會暫停播放或者暫停傳輸或者退到後台等,不至於跟來電造成沖突。至於還有沒有其他的內幕或者貓膩俺也就不得而知啦。
⑸ android 9.0 獲取去電時對方接通的真實狀態(監聽通話過程狀態)
場景:app是完全接管了系統的撥號及通話頁面,因此很多狀態無法獲取,就比如去電時判斷對方是否真實接通還是處於對方振鈴狀態。
在應用層監聽通話狀態只有三種,從TelephonyManager.java中注釋可知這三種狀態含義如下:
CALL_STATE_IDLE :空閑態(沒有通話活動)
CALL_STATE_RINGING :包括響鈴、第三方來電等待
CALL_STATE_OFFHOOK 摘機(接聽):包括dialing撥號中、active接通、hold掛起等
監聽通話狀態:
參考文章:
https://blog.csdn.net/qq_32115439/article/details/78395537
⑹ android開發怎麼監控來電並監聽
實現如下廣播,並且在AndroidManifest中進行注冊
public class PhoneReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("action"+intent.getAction());
//如果是去電
if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
String phoneNumber = intent
.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.d(TAG, "call OUT:" + phoneNumber);
}else{
//查了下android文檔,貌似沒有專門用於接收來電的action,所以,非去電即來電.
//如果我們想要監聽電話的撥打狀況,需要這么幾步 :
* 第一:獲取電話服務管理器TelephonyManager manager = this.getSystemService(TELEPHONY_SERVICE);
* 第二:通過TelephonyManager注冊我們要監聽的電話狀態改變事件。manager.listen(new MyPhoneStateListener(),
* PhoneStateListener.LISTEN_CALL_STATE);這里的PhoneStateListener.LISTEN_CALL_STATE就是我們想要
* 監聽的狀態改變事件,初次之外,還有很多其他事件哦。
* 第三步:通過extends PhoneStateListener來定製自己的規則。將其對象傳遞給第二步作為參數。
* 第四步:這一步很重要,那就是給應用添加許可權。android.permission.READ_PHONE_STATE
TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
//設置一個監聽器
}
}
PhoneStateListener listener=new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String incomingNumber) {
//注意,方法必須寫在super方法後面,否則incomingNumber無法獲取到值。
super.onCallStateChanged(state, incomingNumber);
switch(state){
case TelephonyManager.CALL_STATE_IDLE:
System.out.println("掛斷");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
System.out.println("接聽");
break;
case TelephonyManager.CALL_STATE_RINGING:
System.out.println("響鈴:來電號碼"+incomingNumber);
//輸出來電號碼
break;
}
}
⑺ Android程序接聽及掛斷電話,適配所有Android版本
接聽來電
拒接來電:
其中文中的接聽電話android6-android7的處理方案是利用了監聽通知使用權,所以還要新建一個NotificationListenerService的子類,叫ListenerService,需要在AndroidManifests中配置
另外需要提示用戶打開通知使用權才可以正常使用
已測試通過了android6-android9各種機型,注意拒接來電在android9以上才有官方支持,所以需要設置compileSdkVersion=28。
需要的許可權為:Manifest.permission.CALL_PHONE,Manifest.permission.READ_PHONE_STATE
8.0以上需要Manifest.permission.ANSWER_PHONE_CALLS,Manifest.permission.READ_CALL_LOG。
還不行的請注意三點:
1:檢查許可權是否都申請及在manifests里注冊了
2:compileSdkVersion是否為28
3:android6到android7的手機的接聽來電要依賴通知使用權,所以通知使用權打開才可以正常工作。