如何在android中以编程方式检查哪个sim设置为默认sim
我试图检查我的移动设备是否为双卡,如果sim1准备就绪,如果sim2准备就绪,我使用javareflection完成了这个,现在我想知道sim1是否正在发光,如果sim2是正在发光,如果它的双SIM卡,默认设置为sim。 是否有可能借助javareflection。
你可以这样做:
public int getDefaultSimmm(Context context) { Object tm = context.getSystemService(Context.TELEPHONY_SERVICE); Method method_getDefaultSim; int defaultSimm = -1; try { method_getDefaultSim = tm.getClass().getDeclaredMethod("getDefaultSim"); method_getDefaultSim.setAccessible(true); defaultSimm = (Integer) method_getDefaultSim.invoke(tm); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } Method method_getSmsDefaultSim; int smsDefaultSim = -1; try { method_getSmsDefaultSim = tm.getClass().getDeclaredMethod("getSmsDefaultSim"); smsDefaultSim = (Integer) method_getSmsDefaultSim.invoke(tm); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return smsDefaultSim; }
从API 22(Lollipop MR1)开始,android正式添加了SubscriptionManager
类,它提供了开发人员与sim卡和相关服务相关的所有信息。
SubscriptionManager
文档
但是,在API 24中添加了对检索默认呼叫,SMS和移动数据的支持。如果使用最小SDK版本为24,则可以使用getDefaultSmsSubscriptionId()
方法获取用户的SMS默认设置
SubscriptionManager manager = context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); int defaultSmsId = manager.getDefaultSmsSubscriptionId(); SubscriptionInfo info = manager.getActiveSubscriptionInfo(defaultSmsId);
注意:上面提到的调用需要READ_PHONE_STATE
权限。 确保将其添加到清单文件中
- Android:java.lang.RuntimeException:takePicture失败
- NameValuePair,HttpParams,HttpConnection Params在登录app的服务器请求类上已弃用
- 来自PayPal的交易详情使用Android中的Pay-key
- Firebase / Android:将检索到的值从Firebase添加到arraylist会返回空指针exception
- 找出填写pdf文件所需的字段
- 如何停止intent.ACTION_CALL一旦启动?
- postDelayed会导致消息跳转到队列的前面吗?
- 在日期更改监听器
- 在Android中生成PDF,无需任何第三方库