有没有办法在我的安卓系统中使用另一个SIM卡?我有一个安卓樱桃移动轨道,这是一个双卡安卓手机。我想为我的手机开发一个短信应用程序,但只有第一个SIM卡将被访问。我想访问另一个SIM卡,这样当我按回车键发送消息时,会有一个提示,那就是发送消息的SIM卡。我知道这很简单,但手机制造商对此没有任何反馈。还有别的办法吗?调整还是怎么的?
发布于 2013-11-24 14:28:17
我认为你可以使用dex2jar或者apktool来逆转那些运行在双SIM卡设备上的应用,一旦你找到了相关的“服务管理器”,“电话管理器”,一些接口存根,或者像"Gemini“这样的关键词,你就可以使用Java反射来反映这个类的所有方法。然后你就可以实现这个目标了。
发布于 2020-11-27 05:25:29
此方法可用于从两个SIM卡中选择一个SIM卡!
//above Android API 22
if (Build.VERSION.SDK_INT > 22) {
//for dual sim mobile
SubscriptionManager localSubscriptionManager = SubscriptionManager.from(this);
if (localSubscriptionManager.getActiveSubscriptionInfoCount() > 1) {
//if there are two sims in dual sim mobile
List localList = localSubscriptionManager.getActiveSubscriptionInfoList();
SubscriptionInfo simInfo = (SubscriptionInfo) localList.get(0);
SubscriptionInfo simInfo1 = (SubscriptionInfo) localList.get(1);
final String sim1 = simInfo.getDisplayName().toString();
final String sim2 = simInfo1.getDisplayName().toString();
}else{
//if there is 1 sim in dual sim mobile
TelephonyManager tManager = (TelephonyManager) getBaseContext()
.getSystemService(Context.TELEPHONY_SERVICE);
String sim1 = tManager.getNetworkOperatorName();
}
}else{
//below android API 22
TelephonyManager tManager = (TelephonyManager) getBaseContext()
.getSystemService(Context.TELEPHONY_SERVICE);
String sim1 = tManager.getNetworkOperatorName();
}然后,您可以使用以下方法发送SMS
public static boolean sendSMS(Context context, String smsText) {
SmsManager smsMan = SmsManager.getDefault();
SharedPreferences prefs = context.getSharedPreferences("uinfo", MODE_PRIVATE);
String sim = prefs.getString("sim", "No name defined");
String simName = prefs.getString("simName", "No name defined");
String toNum = "";
try {
if (Build.VERSION.SDK_INT > 22) {
SubscriptionManager localSubscriptionManager = SubscriptionManager.from(context);
if (localSubscriptionManager.getActiveSubscriptionInfoCount() > 1) {
int simID = Integer.parseInt(sim);
List localList = localSubscriptionManager.getActiveSubscriptionInfoList();
SubscriptionInfo simInfo = (SubscriptionInfo) localList.get(simID);
ArrayList<String> parts = smsMan.divideMessage(smsText);
SmsManager.getSmsManagerForSubscriptionId(simInfo.getSubscriptionId()).sendMultipartTextMessage(toNum, null, parts, null, null);
}else{
ArrayList<String> parts = smsMan.divideMessage(smsText);
smsMan.sendMultipartTextMessage(toNum, null, parts, null, null);
}
return true;
}else{
ArrayList<String> parts = smsMan.divideMessage(smsText);
smsMan.sendMultipartTextMessage(toNum, null, parts, null, null);
}
} catch (Exception e) {
}
return false;
}发布于 2011-11-05 15:46:23
官方目前还没有支持这一点的API,你必须联系设备制造商。
https://stackoverflow.com/questions/8018565
复制相似问题