2011-11-05 25 views
9

Có cách nào để tôi có thể truy cập sim khác trong Android của mình không? Tôi có một điện thoại di động Cherry Orbit Orbit là một điện thoại Android sim kép. Tôi muốn phát triển một ứng dụng SMS cho điện thoại của mình, nhưng chỉ có sim thứ nhất mới được truy cập. Tôi muốn truy cập các sim khác, để khi tôi nhấn enter để gửi tin nhắn, sẽ có một dấu nhắc, mà sim tin nhắn sẽ được gửi đi. Tôi biết rằng đó là propreitary, nhưng các nhà sản xuất điện thoại không có thông tin phản hồi về nó. Còn cách nào khác không? tinh chỉnh hay gì đó?Dual Sim Android

+0

hãy xem mã của tôi theo đó tôi có khả năng quản lý SIM sẽ sử dụng để gửi SMS: http: //stackoverflow.com/a/30677542/2267723 .. Tôi hy vọng điều đó sẽ giúp –

+0

Đây là một giải pháp hoàn chỉnh cho Android 5 trở lên http://stackoverflow.com/questions/27351936/how-to-send-a-sms-using-smsmanager-in-dual-sim-mobile/30677542#30677542 –

Trả lời

0

Chính thức ngay bây giờ không có API để hỗ trợ điều này, bạn phải liên hệ với nhà sản xuất thiết bị.

+0

cảm ơn bạn đã phản hồi @Reno. im vẫn hy vọng nếu theres bất kỳ tinh chỉnh cho nó. – bhadz

3

Tôi nghĩ bạn có thể sử dụng dex2jar hoặc apktool để đảo ngược những ứng dụng chạy trên thiết bị thẻ sim kép, một khi bạn đã tìm thấy "người quản lý dịch vụ" liên quan, "người quản lý điện thoại", một số sơ đồ giao diện hoặc một số từ khóa như "Gemini "bạn có thể sử dụng Java Reflection, phản ánh tất cả các phương thức của lớp này. Sau đó, bạn có thể đạt được mục tiêu này.

+0

bạn có thể vui lòng cung cấp thêm chi tiết? @shanwu – gumuruh

+0

@gumuruh sau khi bạn dịch ngược các ứng dụng đó bằng dex2jar, hãy thử tìm một số lớp có tên là TelephonyMgr.java, bạn sẽ tìm thấy một cái gì đó thú vị sau khi bạn so sánh mã nguồn android ~ – shanwu

+0

Nhìn vào đây: http://stackoverflow.com/questions/ 14517338/android-check-dù-the-phone-là-dual-sim/17499889 # 17499889 –

0

Giả sử bạn đang phát triển ứng dụng cho điện thoại của riêng mình và bạn sẵn sàng vượt qua sự cố khi tìm ra ID (sim_id) được gán cho từng thẻ SIM của bạn (có thể là kiểm tra kết quả nhật ký của điện thoại) cho sim_id, đó là những gì tôi đã làm), bạn có thể sử dụng đoạn mã sau để thiết lập thẻ SIM mặc định để gởi SMS:

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

Kết hợp với một số công cụ nhắc khác UI (ví thực sự 'hái' SIM ưa thích), cái này cần phải dùng mẹo.

Tôi không chắc chắn liệu cách tiếp cận này có phù hợp với bạn hay không (mặc dù mã có vẻ khá 'chuẩn'); Tôi đã tìm ra nó với thử nghiệm và lỗi trên Mlais MX28 của tôi (với một ROM tùy chỉnh). Nhưng nó vẫn đáng để bắn, tôi cho là vậy. :)

CẬP NHẬT: Thật kỳ lạ, giải pháp ngừng hoạt động đột ngột sau một vài cập nhật cho ứng dụng tôi đang thực hiện. Nhưng tôi đã đi qua một cách khác (có vẻ hứa hẹn hơn). (Tôi tin rằng điều này có thể được mở rộng cho các kịch bản lựa chọn SIM khác là tốt, như bộ nhớ cache thiết lập chứa mục với name s gprs_connection_sim_setting, voice_call_sim_setting, video_call_sim_setting và những thứ tương tự.)

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); 

(Thật không may, điều này đòi hỏi sự cho phép android.permission.WRITE_SETTINGS.)

Các vấn đề liên quan