我想从我的Android应用程序中获取并显示我的手机的电话号码,它在模拟器中工作但在真实设备(移动设备)上没有。
任何人都可以告诉我原因吗?
这是源
AndroidMenuActivity.java
public class AndroidMenusActivity extends Activity {
TextView txt;
String mphone;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txt = (TextView)findViewById(R.id.txtVw_phonenumber);
TelephonyManager tmgr =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
mphone = tmgr.getLine1Number();
txt.setText(mphone);
System.out.println("*******************************" + mphone);
}
}
的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidhive.androidmenus"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".AndroidMenusActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:1)
此问题无法保证解决方案,因为电话号码并非物理存储在所有SIM卡上,也未从网络广播到手机。在一些需要物理地址验证的国家尤其如此,数字分配仅在事后发生。电话号码分配在网络上进行 - 并且可以在不更改SIM卡或设备的情况下进行更改(例如,这是支持移植的方式)。我知道这很痛苦,但最有可能最好的解决方案就是要求用户输入他/她的电话号码并保存。见here
答案 1 :(得分:1)
TelephonyManager tmgr = (TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
可以使用应用程序上下文检查吗?
答案 2 :(得分:0)
只能在CDMA设备上获取电话号码。在GSM设备上,您将能够获得电话号码
TelephonyManager telephone=(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = telephone.getLine1Number();
答案 3 :(得分:0)
在GSM手机中我们实际上无法做到这一点..但是我们可以通过 TelephonyManager 找到网络信息 它给出一个空字符串,因为电话号码没有嵌入到sim_card内存中。您可以提取sim_card 序列号,如果您有其他资源可以实现此目的,您可以从中映射电话号码。
您可以执行以下操作..
public String getSimSerialNumber ()
在API级别1中添加
需要权限:READ_PHONE_STATE
您还可以获取SIM卡提供商的 MCC和MNC代码。
如果你有电信公司的链接,你可以想象出来......非常容易..