簡體   English   中英

以編程方式更改 SIM 國家/地區?

[英]Change SIM country programmatically?

如何在沒有 root 訪問權限的情況下以編程方式更改 Android 手機 SIM 的國家和網絡? 我正在使用此代碼來檢索信息:

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

System.out.println(tm.getSimCountryIso()); // prints 'us', but I want it to be 'fr'
System.out.println(tm.getNetworkCountryIso()); // prints 'us, but I want it to be 'fr'

由於我的 SIM 卡來自美國,因此兩個輸出都是us 例如,如何以編程方式使 output 成為fr (法國)?

基本上,我想欺騙我的智能手機,使其認為其 SIM 的國家和網絡是 France ,例如。

像這樣的東西是完美的,但它不存在:

tm.setSimCountryIso('fr')

tm.setNetworkCountryIso('fr')

沒有root,您所要求的是不可能的。

正如評論中已經說明的那樣,除非它是一個特殊的可寫 SIM ,否則物理上不可能更改 SIM 的ICCID

至於對getSimCountryIsogetNetworkCountryIso()的調用,它們是系統 API。 沒有root,就沒有辦法干擾他們的操作。

Android 具有多層安全性,包括基於用戶權限限制應用程序訪問、默認啟用SELinux 、作為驗證啟動的一部分進行驗證性檢查等。

如果你在設備上有 root,你可以創建一個Xposed 框架模塊來掛鈎這些函數並覆蓋它們的返回值。

如果您好奇,用於將 ICCID 信息轉換為兩個字母國家名稱的表在這里是硬編碼的。 如果該鏈接無法正確打開 - 它從第 316 行開始。

因此,改變這一點需要重新編譯操作系統的核心 JARs 之一。

另請注意,根據您的實際目的,更改這兩個函數的結果可能根本不起作用。

例如,如果您想通過手機為其他國家/地區創建 Google 帳戶,更改 SIM 卡將無濟於事,因為無論您如何連接到 Internet,Google 仍會查看您的 IP 地址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM