如何在真实设备上获取当前SIM卡的手机号码?
我必须做一个应用程序,显示单元中正在使用的SIM卡的联系电话号码。 为此,我需要使用TelephonyManager类。 我可以获得有关其使用的详细信息?
您可以使用TelephonyManager
执行此操作:
TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); String number = tm.getLine1Number();
getLine1Number()
的文档说,如果这个数字是“不可用的”,这个方法将会返回null
,但是当这个数字不可用的时候它不会说。
您需要向您的应用程序授予进行此查询的权限,方法是在Manifest中添加以下内容:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
(您不应该使用TelephonyManager.getDefault()
来获取TelephonyManager
因为这是一个私人的未公开API调用,将来可能会更改 。)
嗨其实这是我的同样的问题,但我没有得到任何东西。现在我从特定的Android真实设备(Android手机)获得手机号码和他的电子邮件Id。现在有90%的人使用Android手机上的应用程序的应用程序。现在我正在得到移动号码和电子邮件ID通过这个什么是应用API.Its非常简单的使用看到下面的代码。
AccountManager am = AccountManager.get(this); Account[] accounts = am.getAccounts(); for (Account ac : accounts) { acname = ac.name; if (acname.startsWith("91")) { mobile_no = acname; }else if(acname.endsWith("@gmail.com")||acname.endsWith("@yahoo.com")||acname.endsWith("@hotmail.com")){ email = acname; } // Take your time to look at all available accounts Log.i("Accounts : ", "Accounts : " + acname); }
并导入这个API
import android.accounts.Account; import android.accounts.AccountManager;
我必须做一个应用程序,显示单元中正在使用的SIM卡的联系电话号码。 为此我需要使用Telephony Manager类。 我可以获得有关其使用的详细信息?
是的,您必须使用电话pipe理器;如果根本没有find联系号码。 的用户; 您可以通过使用相同的电话pipe理器类获得Sim卡的SIM卡序列号和Android设备的Imei号…
添加权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
import:
import android.telephony.TelephonyManager;
使用下面的代码:
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); // get IMEI imei = tm.getDeviceId(); // get SimSerialNumber simSerialNumber = tm.getSimSerialNumber();
那么,所有这些都可能是暂时的黑客,但是没有办法获得用户的手机号码。 这是违反道德的政策。
例如,上述答案中的一个build议获取所有账户并从那里提取。 而且它不工作了! 所有这些只是黑客。
只有获取用户手机号码的方法是通过运营商。 如果您与Aitel,Vodafone等移动运营商build立了合作关系,您可以在通过移动networking连接进行连接时,通过手机获取用户的手机号码。
不知道是否有任何制造商联合起来获得特定的权限可以帮助 – 没有探索这个领域,但没有logging至less。
有时您可以通过USSD请求向运营商索取电话号码。 例如,我可以通过拨打* 116#来获得我的电话号码。这可能可以在一个应用程序内完成,我想, 如果 USSD响应某种方式可能会被捕获。 OffCourse这不是我将推荐在要分发的应用程序中使用的一种方法,这些代码甚至可能在运营商之间有所不同。
很多人说:
String phoneNumber = TelephonyManager.getDefault().getLine1Number();
可用性取决于运营商和号码在SIM卡上的编码方式。 如果是由制作SIM卡的公司或由移动运营商自己进行硬编码。 这返回与在设置 – >关于电话相同。