[英]Android 10 NFC App - Stops working when phone sleeps while in MS Intune Kiosk Mode
[英]Make phone call while app is in kiosk mode
我們正在開發一個 Android 應用程序,該應用程序旨在替換默認的 Android 撥號器並自行處理設備中正在進行的所有呼叫。 到目前為止,該應用程序按預期工作,我們能夠通過啟動ACTION_CALL
意圖來處理來電和撥打電話。
但是,此應用程序旨在通過 Android 管理 API 在信息亭模式下運行。 每當我們觸發ACTION_CALL
意圖時,信息亭模式都會阻止它,盡管應用程序設置為默認撥號程序。
經過一些調試,我們發現問題是,在啟動 Intent 時,在我們的應用程序收回請求控制權之前,系統會嘗試啟動com.android.server.telecom/.components.UserCallActivity
。 當我們的應用程序在 kiosk 模式下運行時,我們在logcat
出現以下錯誤:
10-25 20:29:44.560 1186 3677 E ActivityTaskManager: Attempted Lock Task Mode violation mStartActivity=ActivityRecord{e45f03 u0 com.android.server.telecom/.components.UserCallActivity t24}
我們嘗試了不同的解決方法,但似乎都不起作用。 我們弄亂了 Android 管理 API 參數,例如persistentPreferredActivities
或delegatedScopes
。 現在,我們認為最好的辦法是嘗試將com.android.server.telecom
添加到 locktask 白名單中,如下所示:
var dpm = (DevicePolicyManager)MainActivity.GetSystemService(Context.DevicePolicyService);
if (dpm.IsDeviceOwnerApp(MainActivity.PackageName)){
dpm.SetLockTaskPackages(XXX, new[] { MainActivity.PackageName, "com.android.server.telecom"})
}
但是這種方法需要將我們的應用程序設置為設備管理員,只要我們使用 Android 管理 API,我們不知道這是否可行。 我們也嘗試過直接調用 DPC 包,但同樣沒有成功。
任何幫助將不勝感激。
首先感謝您在 Sof 中將這個問題作為一個新問題提出 - 正如所討論的那樣,因此其他開發人員可以做出貢獻,並且將來可能會幫助其他人。
我有一個關於你的解決方案和應用程序的問題......你為什么不選擇ConnectionService作為自我管理的應用程序,這樣你就不需要成為系統中的默認電話應用程序,你將能夠使用你自己的自定義 Ui而不是默認系統 inCallUi。
另外一點,安裝在完全托管和專用設備上的 DPC 被稱為設備所有者,設備所有者僅在第一次安裝設備時設置,而不是稍后(使用 Nfc 或 QrCode 配置)。
另一點是,“設備管理員”不是設備所有者,並且不再支持設備管理員,因此該解決方案也無濟於事。
我不熟悉 Android 管理 API,但只是發現這個: 將自助服務終端應用程序鏈接到其他應用程序。
"applications": [
{
"packageName": "com.example.app",
"installType": "KIOSK",
"defaultPermissionPolicy": "GRANT"
},
{
"packageName": "com.google.android.dialer",
"installType": "FORCE_INSTALLED",
"defaultPermissionPolicy": "GRANT"
},
{
"packageName": "com.android.server.telecom",
"installType": "FORCE_INSTALLED",
"defaultPermissionPolicy": "GRANT"
}
]
請讓我知道這是否對你有用,謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.