快手官方视频了

8596人阅读
Android(18)
& & & & 搞了一个想获取Android手机的本机号码的功能,但是发现双卡双待的手机是无法获取到两个号码 的。在Android的官方文档是没有提供相应的Api的,因为标准的Andoird是没有双卡的,好像也只有国内才会搞双卡双待的神器吧。以下记录一下做这个功能所学习到的东西。直接上代码:
import java.lang.reflect.InvocationTargetE
import java.lang.reflect.M
import java.util.L
import android.app.A
import android.content.C
import android.content.SharedP
import android.content.SharedPreferences.E
import android.os.B
import android.preference.PreferenceM
import android.telephony.CellI
import android.telephony.TelephonyM
import android.view.M
import android.widget.TextV
public class MainActivity extends Activity
private TextView
private TextView tv2;
// ///////////////////////////////////
static String
static String
static String
SIMCARD_1;
static String
SIMCARD_2;
static boolean
// //////////////////////////////////
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 + &
& + &这是双卡手机!&);
// tv.setText(&这是单卡手机&);
tv.setText(&本机号码是:& + &
& + phoneNumber1 + &
& + &这是单卡手机&);
public void initIsDoubleTelephone(Context context)
isDouble =
Method method =
Object result_0 =
Object result_1 =
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
// 只要在反射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 =
e.printStackTrace();
// System.out.println(&1_ISSINGLETELEPHONE:&+e.toString());
} catch (NoSuchMethodException e)
isDouble =
e.printStackTrace();
// System.out.println(&2_ISSINGLETELEPHONE:&+e.toString());
} catch (IllegalArgumentException e)
isDouble =
e.printStackTrace();
} catch (IllegalAccessException e)
isDouble =
e.printStackTrace();
} catch (InvocationTargetException e)
isDouble =
e.printStackTrace();
} catch (Exception e)
isDouble =
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(&卡一可用&);
{// 两个卡都不可用(飞行模式会出现这种种情况)
editor.putBoolean(SIMCARD_1, false);
editor.putBoolean(SIMCARD_2, false);
tv2.setText(&飞行模式&);
// 保存为单卡手机
editor.putString(SIMCARD, &0&);
editor.putBoolean(ISDOUBLE, false);
public boolean onCreateOptionsMenu(Menu menu)
// I this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
当然不要忘记添加权限:&uses-permission android:name=&android.permission.READ_PHONE_STATE& /&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:404381次
积分:3055
积分:3055
排名:第9298名
原创:42篇
转载:29篇
评论:63条
(15)(28)(1)(3)(5)(1)(3)(3)(4)(9)查看: 8582|回复: 3
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID3700785阅读权限20帖子积分114金币81 注册时间
A2.安卓瓦力, 积分 114, 距离下一级还需 66 积分
积分114金币81 注册时间
如题:V889D是双卡双待的机子,接到电话后,会显示是卡1还是卡2接到的电话,但收到短信时,怎样知道是哪个卡收到的短信呢?
安卓论坛 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、管理员和版主有权不事先通知发贴者而删除本文
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID8329162阅读权限20帖子积分57金币83 注册时间
A2.安卓瓦力, 积分 57, 距离下一级还需 123 积分
积分57金币83 注册时间
打开短信时候看右下角&&有1&&和2的
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID3700785阅读权限20帖子积分114金币81 注册时间
A2.安卓瓦力, 积分 114, 距离下一级还需 66 积分
积分114金币81 注册时间
谢谢。看到了。
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID7295868阅读权限20帖子积分93金币110 注册时间
A2.安卓瓦力, 积分 93, 距离下一级还需 87 积分
积分93金币110 注册时间
路过打酱油
Powered by

我要回帖

更多关于 快手官方 的文章

 

随机推荐