專案中有個彩鈴需求,所以用到了預設通話,在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...