![](/img/trans.png)
[英]How to get IMSI Number in Android SDK API Level 29 or higher?
[英]What are the minimum permissions I need to get incoming phone number and call history for that number for API > 29 and API < 29 for Android app?
我希望為我的 Android 應用程序訪問以下功能:
通過研究,我發現對於舊版本,我可以簡單地使用
intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
And I would get the number but it does not work for API > 29 (number comes out as null for API = 29 because it is deprecated in API level 29 .). 另外,我不確定僅獲取該號碼的歷史記錄的最簡單方法是什么。
我可以使用inCallService並且 Google 建議創建默認電話應用程序,該應用程序可能是默認呼叫應用程序,並為我提供所有必需的權限。 但是,我的應用程序不需要所有這些權限,理想情況下它不應該是一個完整的呼叫應用程序,它只是一個可以在默認應用程序之上運行的功能,因此我正在尋找需要最少數量的替代方案谷歌實際上會授予我的權限。
我還向用戶詢問 PHONE_CALL_STATE 以便通過 EXTRA_STATE 獲取 PHONE_STATE,它只允許我知道呼叫何時開始、結束、接聽和錯過。 但是我需要一個號碼本身和一些未接/接聽電話的歷史記錄以及不同的 API。
任何幫助將不勝感激。
根據文檔,如果接收方應用程序具有READ_CALL_LOG
(除了READ_PHONE_STATE
權限),則提供EXTRA_INCOMING_NUMBER
。
添加 READ_CALL_LOG 后,您會注意到您的應用程序將開始接收該廣播兩次,一次是getString(EXTRA_INCOMING_NUMBER)
返回 null,另一次是getString(EXTRA_INCOMING_NUMBER)
包含實際數字。 請參閱此處的文檔說明。
筆記:
EXTRA_INCOMING_NUMBER
= null,你可以忽略那個。EXTRA_INCOMING_NUMBER
僅在來電時收到,無法獲取撥出電話的號碼targetSdk
(在您的 gradle 文件中)應該小於 29 才能正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.