Android 預設通話應用

2021-10-08 16:43:44 字數 1775 閱讀 4134

專案中有個彩鈴需求,所以用到了預設通話,在android10之後,請求預設通話許可權發生了改變,故整理

關於替換系統的預設通話,需要提供如下幾點

1.提供uiactivity,在登錄檔中需要有如下配置

2.提供service,在登錄檔中也需要如下配置

class phonecallservice extends incallservice }};

@override

public void oncreate()

/*** 有**進來時,呼叫的方法

* 對call進行監聽,在不同狀態處理ui

* call.answer(videoprofile.state_audio_only);//接聽

* call.disconnect();//結束通話

* call.details details = call.getdetails();//**的資訊

* videocall videocall = call.getvideocall();

* int state = call.getstate();//通話狀態

* call.hold();//通話保留

* call.unhold();//通話釋放

** @param call

*/@override

public void oncalladded(call call)

/*** **結束通話時,呼叫的方法

** @param call

*/@override

public void oncallremoved(call call)

}

關於許可權,在android10之後,對預設應用提供了新的api來管理rloemanager

fun setdefaultcall(context: context, activity: activity) 

if (build.version.sdk_int >= build.version_codes.q)

val intent = intent(telecommanager.action_change_default_dialer)

intent.putextra(

telecommanager.extra_change_default_dialer_package_name,

context.packagename

)intent.addflags(intent.flag_activity_new_task)

context.startactivity(intent)

}

許可權判斷沒有改變,仍可用原來的

/**

* 判斷是否為預設通話應用

*/public fun isdefaultcall(context: context): boolean else

}return false

}

關於預設通話,要點總結完畢

採坑分享:

由於對rolemanager的使用細節不了解,所以花了很多時間·

在登錄檔中,對uiactivity需要新增的filter缺一不可,否則不會彈框,下圖是我從原始碼裡面翻出來的

以上文章是乾貨,希望對你又幫助

android應用預設安裝路徑配置

android 從api 8 開始,應用自身可以設定預設安裝位置。設定方法 在 androidmanifest.xml 中的manifest 節點設定 android installlocation屬性 其中 android installlocation有3種屬性可以設定,分別是 auto int...

Android通話錄音之坑

之前關於 錄音的需求很簡單,來電或者去電時,手機自動錄音。關於android監聽 狀態,我這裡有乙個demo,就不再詳細描述了,可以到github去看看,位址是 有兩種方式可以進行 狀態的監聽,一種是使用broadcast receiver,一種使用telephonymanager設定 中兩種方法都...

android 系統獲取通話狀態的方法

1 編寫乙個 類,該類繼承自phonestatelistener 重寫該類中的監聽方法 classmyphonelistener extends phonestatelistener 2 建立並啟動監聽服務 需要執行如下 才能監聽並執行 中重寫的oncallstatechangerd方法 telep...