2011-11-05 30 views
9

有沒有一種方法可以訪問我的android中的其他sim卡?我有一個Android櫻桃手機軌道這是一個雙SIM卡android手機。我想爲我的手機開發一個SMS應用程序,但只有第一個SIM卡可以訪問。我想訪問另一個SIM卡,這樣當我按下回車鍵發送信息時,會出現一個提示信息,將發送哪個SIM卡。 我知道這是有道理的,但手機制造商對此沒有任何反饋。有沒有其他方法?調整什麼?Dual Sim Android

+0

看看我的代碼,我可以管理哪些SIM卡用於發送短信:http://stackoverflow.com/a/30677542/2267723 ..我希望這會有所幫助 –

+0

這裏是一個完整的解決方案爲Android 5和更舊http://stackoverflow.com/questions/27351936/how-to-send-a-sms-using-smsmanager-in-dual-sim-mobile/30677542#30677542 –

回答

0

正式的現在沒有API來支持這個,你必須聯繫設備製造商。

+0

感謝您的反饋@Reno。即時通訊仍然希望如果有任何調整。 – bhadz

3

我認爲你可以使用dex2jar或apktool來反轉那些在雙SIM卡設備上運行的應用程序,一旦你找到相關的「服務管理器」,「電話管理器」,一些接口存根,或一些關鍵詞如「雙子座「然後你可以使用Java Reflection,反映這個類的所有方法。那麼你可以達到這個目標。

+0

可否請您提供更多詳情? @shanwu – gumuruh

+0

@gumuruh在用dex2jar反編譯這些應用程序後,嘗試找到一些名爲TelephonyMgr.java的類,在比較Android源代碼後應該會發現一些有趣的東西〜 – shanwu

+0

看看這個:http://stackoverflow.com/questions/ 14517338/android-check-the-phone-is-dual-sim/17499889#17499889 –

0

假設您正在爲自己的手機開發應用程序,並且您願意花費很多時間來查找分配給每個SIM卡的ID(sim_id)(可能是通過檢查手機的日誌輸出,搜索對於sim_id,這是我做了什麼),你可以使用下面的代碼來設置默認SIM卡,發送短信:

int simId = <place desired SIM ID here>; 
Intent simIntent = new Intent("android.intent.action.SMS_DEFAULT_SIM"); 
simIntent.putExtra("simid", simId); 
sendBroadcast(simIntent); 

與其他一些UI提示的東西相結合(對實際「採摘」的首選SIM),這應該做的伎倆。

我完全不知道這種方法是否適合你(儘管代碼看起來很「標準」);我通過在我的Mlais MX28上進行反覆試驗(用定製的ROM)來解決這個問題。但我認爲這仍然值得一試。 :)

更新: 奇怪的是,該解決方案在我正在處理的應用程序的幾個更新後意外停止工作。但我遇到了另一種方式(這似乎更有希望)。 (我相信這可以擴展到其他SIM選擇場景爲好,因爲設置緩存包含name小號gprs_connection_sim_settingvoice_call_sim_settingvideo_call_sim_setting之類條目。)

ContentValues val = new ContentValues(); 
val.put("value", "here goes the preferred SIM ID"); 
getContentResolver().update(Uri.parse("content://settings/system"), val, "name='sms_sim_setting'", null); 

(不幸的是,這需要android.permission.WRITE_SETTINGS許可。 )