在android中获取我的电话号码
我怎样才能在android中获得我的电话号码
当我使用:
TelephonyManager tMgr =(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number();
并使用:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
返回Null
为什么?
从文档 :
返回第1行的电话号码string,例如GSM电话的MSISDN。 如果不可用,则返回null。
所以你已经做好了,但没有电话号码存储。
如果你得到null
,你可以显示一些东西让用户input他/她自己的电话号码。
如果您调用的函数返回null,则表示您的电话号码未在您的联系人列表中注册。
如果您只需要一个唯一的号码,而不是电话号码,则可以使用SIM卡的序列号:
TelephonyManager telemamanger = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String getSimSerialNumber = telemamanger.getSimSerialNumber();
在这里回答
使用下面的代码:
TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number();
在AndroidManifest.xml中,给出以下权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
但请记住,此代码并不总是工作,因为手机号码取决于SIM卡和networking运营商/手机运营商。
此外,请尝试检查电话 – >设置 – >关于 – >电话身份 ,如果你能够在那里查看号码,从上面的代码得到电话号码的可能性更高。 如果您无法在设置中查看电话号码,则无法通过此代码获取!
build议的解决方法:
- 从用户手动input用户的电话号码。
- 通过短信向用户的手机号码发送密码。
- 要求用户input密码以确认电话号码。
- 将该号码保存在sharedpreference中。
在应用程序第一次启动时,将上述4个步骤作为一次性活动。 稍后,每当需要电话号码时,请使用共享首选项中的可用值。
private String getMyPhoneNumber(){ TelephonyManager mTelephonyMgr; mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); return mTelephonyMgr.getLine1Number(); } private String getMy10DigitPhoneNumber(){ String s = getMyPhoneNumber(); return s.substring(2); }
方法1:
TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number();
有了下面的许可
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
方法2:
还有另外一种方法,你将能够得到你的电话号码,我还没有在多个设备上testing过,但是上面的代码并不是每次都在工作。
尝试下面的代码:
String main_data[] = {"data1", "is_primary", "data3", "data2", "data1", "is_primary", "photo_uri", "mimetype"}; Object object = getContentResolver().query(Uri.withAppendedPath(android.provider.ContactsContract.Profile.CONTENT_URI, "data"), main_data, "mimetype=?", new String[]{"vnd.android.cursor.item/phone_v2"}, "is_primary DESC"); if (object != null) { do { if (!((Cursor) (object)).moveToNext()) break; String s1 = ((Cursor) (object)).getString(4); } while (true); ((Cursor) (object)).close(); }
您将需要添加这两个权限。
<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PROFILE" />
希望这有助于,谢谢!
Robi Code是为我工作,只要把!如果!如果电话号码为空,用户可以填写他/她自己的电话号码。
editTextPhoneNumber = (EditText) findViewById(R.id.editTextPhoneNumber); TelephonyManager tMgr; tMgr= (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number(); if (mPhoneNumber != null){ editTextPhoneNumber.setText(mPhoneNumber); }