展开全部

Android的官方文档是32313133353236313431303231363533e58685e5aeb931333337626230没有提供相应的Api的,因为标准的Andoird是没有双卡的,好像也只有国内才会搞双卡双待的神器吧。以下记录一下做这个功能所学习到的东西。直接上代码:

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.List;

import android.app.Activity;

import android.content.Context;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.os.Bundle;

import android.preference.PreferenceManager;

import android.telephony.CellInfo;

import android.telephony.TelephonyManager;

import android.view.Menu;

import android.widget.TextView;

public class MainActivity extends Activity

{

private TextView tv;

private TextView tv2;

// ///

static String ISDOUBLE;

static String SIMCARD;

static String SIMCARD_1;

static String SIMCARD_2;

static boolean isDouble;

// //

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tv = (TextView) findViewById(R.id.text);

tv2 = (TextView) findViewById(R.id.text2);

tv2.setText("不知道哪个卡可用!");

getNumber();

}

private void getNumber()

{

TelephonyManager tm = (TelephonyManager) this.getSystemService(this.TELEPHONY_SERVICE);

String phoneNumber1 = tm.getLine1Number();

// String phoneNumber2 = tm.getGroupIdLevel1();

initIsDoubleTelephone(this);

if (isDouble)

{

// tv.setText("这是双卡手机!");

tv.setText("本机号码是:" + " " + phoneNumber1 + " " + "这是双卡手机!");

} else

{

// tv.setText("这是单卡手机");

tv.setText("本机号码是:" + " " + phoneNumber1 + " " + "这是单卡手机");

}

}

public void initIsDoubleTelephone(Context context)

{

isDouble = true;

Method method = null;

Object result_0 = null;

Object result_1 = null;

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

try

{

// 只要在反射getSimStateGemini 这个函数时报了错就是单卡手机(这是我自己的经验,不一定全正确)

method = TelephonyManager.class.getMethod("getSimStateGemini", new Class[]

{ int.class });

// 获取SIM卡1

result_0 = method.invoke(tm, new Object[]

{ new Integer(0) });

// 获取SIM卡2

result_1 = method.invoke(tm, new Object[]

{ new Integer(1) });

} catch (SecurityException e)

{

isDouble = false;

e.printStackTrace();

// System.out.println("1_ISSINGLETELEPHONE:"+e.toString());

} catch (NoSuchMethodException e)

{

isDouble = false;

e.printStackTrace();

// System.out.println("2_ISSINGLETELEPHONE:"+e.toString());

} catch (IllegalArgumentException e)

{

isDouble = false;

e.printStackTrace();

} catch (IllegalAccessException e)

{

isDouble = false;

e.printStackTrace();

} catch (InvocationTargetException e)

{

isDouble = false;

e.printStackTrace();

} catch (Exception e)

{

isDouble = false;

e.printStackTrace();

// System.out.println("3_ISSINGLETELEPHONE:"+e.toString());

}

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);

Editor editor = sp.edit();

if (isDouble)

{

// 保存为双卡手机

editor.putBoolean(ISDOUBLE, true);

// 保存双卡是否可用

// 如下判断哪个卡可用.双卡都可以用

if (result_0.toString().equals("5") && result_1.toString().equals("5"))

{

if (!sp.getString(SIMCARD, "2").equals("0") && !sp.getString(SIMCARD, "2").equals("1"))

{

editor.putString(SIMCARD, "0");

}

editor.putBoolean(SIMCARD_1, true);

editor.putBoolean(SIMCARD_2, true);

tv2.setText("双卡可用");

} else if (!result_0.toString().equals("5") && result_1.toString().equals("5"))

{// 卡二可用

if (!sp.getString(SIMCARD, "2").equals("0") && !sp.getString(SIMCARD, "2").equals("1"))

{

editor.putString(SIMCARD, "1");

}

editor.putBoolean(SIMCARD_1, false);

editor.putBoolean(SIMCARD_2, true);

tv2.setText("卡二可用");

} else if (result_0.toString().equals("5") && !result_1.toString().equals("5"))

{// 卡一可用

if (!sp.getString(SIMCARD, "2").equals("0") && !sp.getString(SIMCARD, "2").equals("1"))

{

editor.putString(SIMCARD, "0");

}

editor.putBoolean(SIMCARD_1, true);

editor.putBoolean(SIMCARD_2, false);

tv2.setText("卡一可用");

} else

{// 两个卡都不可用(飞行模式会出现这种种情况)

editor.putBoolean(SIMCARD_1, false);

editor.putBoolean(SIMCARD_2, false);

tv2.setText("飞行模式");

}

} else

{

// 保存为单卡手机

editor.putString(SIMCARD, "0");

editor.putBoolean(ISDOUBLE, false);

}

editor.commit();

}

@Override

public boolean onCreateOptionsMenu(Menu menu)

{

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

不要忘记添加权限:

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

android 手机号分段_android开发中想获取双卡手机号码,两个号码的怎样获取?相关推荐

  1. android 手机号分段_android 手机号分段_android系统实现手机号添加分割符

    通过调用系统的PhoneNumberFormattingTextWatcher类来实现 ` import android.annotation.SuppressLint; import android ...

  2. android 手机号分段_Android EditText输入手机号自带分隔符

    图片发自简书App 输入手机号时,为了看着更加方便可能会显示成xxx xxxx xxxx,如图 为了这个需求,自己简单的研究了一下,写了个这个小东西自己练练思维 简单来看就是按照3-4-4来分割,通过 ...

  3. Android记录22-关于开发中账号绑定的逻辑处理

    Android记录22-关于开发中账号绑定的逻辑处理  转载请注明:IT_xiao小巫    博客地址:http://blog.csdn.net/wwj_748 前言 本篇博客要跟大家分享的是开发中我 ...

  4. android怎么监听多点触摸_Android开发中多点触摸的实现方法

    Android多点触控需要LCD驱动和程序设计支持,其实我们只要采用电容屏触摸手机的技术即可,接下来,就让爱站技术频道小编来讲解Android开发中多点触摸的实现方法吧! 多点触摸技术在实际开发过程中 ...

  5. android引用的java包_Android开发中jar包的创建及引用

    jar包有两种,一种是纯粹的库功能,没有main入口函数,故无法直接执行:一种是包含main的可执行包! 如有hello/hello.java文件: $ cd hello/$ javac hello. ...

  6. mvvm模式和mvc的区别_Android 开发中的架构模式 -- MVC / MVP / MVVM

    预备知识 了解 Android 基本开发 看完本文可以达到什么程度 了解如何分析一个架构模式 掌握 MVC,MVP,MVVM 架构定义和实现 更多面试内容,面试专题,flutter视频 全套,音视频从 ...

  7. Android短视频app开发中如何实现上下滑动切换效果

    在大部分短视频app开发中,都会在app内增加上下滑动切换视频的功能,即下滑切换到下一条短视频,上滑切回到上一条.这种机制可以给用户带来良好的视觉体验,云豹作为优秀的app源码供应商,在该效果的实现上 ...

  8. android java 指针异常处理,Android程序员日常开发中异常总结

    CaptainAndroid.png Java异常 平时开发中遇到的java异常很多,因为引起原因一目了然,当然也有不好解决的,比如一个简单的空指针异常你可能始终无法找到其为空的原因,甚至使用前还做了 ...

  9. android音乐播放器底部,android音乐播放器开发中所遇到的bug及解决方法

    这几天在写一个android版的音乐播放器,在开发过程中遇到了一些小问题 小bug,最后经过一番调试与查找 终于发现问题所在.现在将开发中的问题与解决方法分享给大家... 一,音乐播放器的界面我采用的 ...

最新文章

  1. 乐高机器人教室布置图片大全_全国青少年机器人技术等级考试(上海宝山站)顺利举行...
  2. android 网络加载图片点击大图后 浏览 可 缩放,Android 网络加载图片点击大图后 浏览 可 缩放...
  3. python提取excel数据-使用Python从Excel获取运营数据
  4. 《我的青春谁做主》我想要的结局
  5. Microsoft PHP.Net ?
  6. 杭电2013-蟠桃记(C++)
  7. smarty中js的调用方法
  8. zabbix安装及简单配置
  9. Python之configparser模块详解和使用
  10. Android odex文件反编译
  11. 学嵌入式必须掌握的经验
  12. 简明Python3教程 17.更多
  13. CAN协议要点及车辆CAN协议破解
  14. 怎样去除抖音短视频的水印,快速去除视频水印的方法
  15. html5字体加粗斜体,font设置字体加粗
  16. 中间件系列六 RabbitMQ之Topic exchange 用法
  17. 20.4.26工作感想
  18. 算法的时间复杂度排序
  19. 【315】备份全盘和备份C盘的区别
  20. 区块链与merkle tree

热门文章

  1. ES-SQL 查询时不区分大小写的解决方案
  2. SoC中RDC的问题以及解决方法
  3. 验证码短信 API 接入指南:Java 语言示例代码
  4. 清远市田家炳中学大学城网
  5. Facebook发帖的图片标准
  6. NFT Insider #51:YGG举办首届经理峰会,Gotchiverse将于月底推出
  7. HLS播放:html5下用video标签来播放m3u8格式的视频
  8. Node后端项目下热更新nodemon
  9. 北斗授时装置(定时服务)京准为您来解读
  10. sap 用户权限表_SAP 用户权限