getLine1Number()返回空白,非空

我想获得手机号码。 我已经使用Alex Volovoy的 这个链接下面的代码引用

TelephonyManager tMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number(); Log.d("msg", "Phone : "+mPhoneNumber); 

Logcat中的输出:

没有Simcard Phones返回:

 02-01 17:22:45.472: D/msg(29102): Phone : null 

用Simcard:

 02-01 17:22:45.472: D/msg(29102): Phone : 

我还在AndroidManifest.xml中的<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

所以我该怎么做? 有什么错误吗?

Solutions Collecting From Web of "getLine1Number()返回空白,非空"

要从设备获取电话号码,首先必须在设备上设置自己的电话号码,只需通过以下方式:

设置 – >关于电话 – >状态 – >我的电话号码

每个运营商的SIM卡上都没有电话号码,就像印度的SIM没有电话号码一样,所以我们无法从这些连接中获得电话号码。 但是,一些国家和运营商已经在SIM上存储了电话号码,我们可以得到这些号码。 为了使这个工作适用于所有设备,我们可以采用两种策略:

为了避免这个问题,我们可以捕捉到错误并相应地工作。 喜欢:

 TelephonyManager tMgr = (TelephonyManager) ShowMyLocation.this.getSystemService(Context.TELEPHONY_SERVICE); String MyPhoneNumber = "0000000000"; try { MyPhoneNumber =tMgr.getLine1Number(); } catch(NullPointerException ex) { } if(MyPhoneNumber.equals("")){ MyPhoneNumber = tMgr.getSubscriberId(); } 

当电话pipe理器返回空白时,我有另一个解决scheme来获得电话号码。 我希望它会帮助你。

这是我的示例代码:

 public static final String main_data[] = { "data1", "is_primary", "data3", "data2", "data1", "is_primary", "photo_uri", "mimetype" }; object object = (TelephonyManager) context.getSystemService("phone"); if (!TextUtils.isEmpty(((TelephonyManager) (object)).getLine1Number())) { } object = context.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; } if (s.equals("vnd.android.cursor.item/phone_v2")) { String s1 = ((Cursor) (object)).getString(4); boolean flag1; if (((Cursor) (object)).getInt(5) > 0) { flag1 = true; } else { flag1 = false; } Toast.makeText(SampleActivity.this, "Phone:-" + s1, Toast.LENGTH_LONG).show(); } } while (true); ((Cursor) (object)).close(); } 

另外不要忘记添加这两个权限:

 <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PROFILE" />