获取用户sim卡号码android
在我的应用程序中,我想获取用户的sim卡号码(如果存在),我尝试了以下代码,但返回“” 所需许可获取用户sim卡号码android,android,android-settings,Android,Android Settings,在我的应用程序中,我想获取用户的sim卡号码(如果存在),我尝试了以下代码,但返回“” 所需许可 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 我到处都在搜索,想找到一种获取用户sim卡号码的方法,但没有任何效果。有人说,用户的sim卡提供商可能对此功能有限制,但我使用的imo应用程序可以获取我的sim卡号码并在应用程序中显示,所以我在同一部手机上尝试了不同的方法,但没有任何效果,如果
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
我到处都在搜索,想找到一种获取用户sim卡号码的方法,但没有任何效果。有人说,用户的sim卡提供商可能对此功能有限制,但我使用的imo应用程序可以获取我的sim卡号码并在应用程序中显示,所以我在同一部手机上尝试了不同的方法,但没有任何效果,如果有人知道工作方法,请告诉我。步骤1:在AndroidManifest.xml中添加所需的权限
<uses-permission android:name="android.permission.READ_PHONE_STATE">
</uses-permission>
查看更多信息首先,我建议您使用共享首选项,您只需将其存储并在您的应用程序中随时随地使用即可。我想这是最简单的方法 或 试着登记 电话-->设置-->关于-->
手机身份,如果你能在那里查看号码,那么可能你就能得到号码。但是,如果您无法在设置中查看电话号码,则无法通过此代码获取。在清单中启用权限,获取您的SMI号码和Imei号码 Java
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
如果SMI编号返回null,请从whatsapp获取
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccounts();
ArrayList<String> googleAccounts = new ArrayList<String>();
for (Account ac : accounts) {
String acname = ac.name;
String actype = ac.type;
// Take your time to look at all available accounts
System.out.println("Accounts : " + acname + ", " + actype);
}
if(actype.equals("com.whatsapp")){
String phoneNumber = ac.name;
}
AccountManager am=AccountManager.get(这个);
Account[]accounts=am.getAccounts();
ArrayList googleAccounts=新的ArrayList();
用于(账户ac:账户){
字符串acname=ac.name;
字符串actype=ac.type;
//花点时间查看所有可用的帐户
System.out.println(“账户:“+acname+”,“+actype”);
}
if(actype.equals(“com.whatsapp”)){
字符串phoneNumber=ac.name;
}
无法获取Sim卡号码。你可以想,如果你的应用程序可以得到你的电话号码,那么所有的应用程序都可以得到。我是怎么做到的?@RoShan Shan这不是电话号码,而是14位数字的sim号码。试试tMgr.getSimSerialNumber()
。我想他想得到电话号码String mPhoneNumber=tMgr.getLine1Number()代码>我不需要序列号,我需要sim/电话号码,在这里我可以发送短信来验证用户的身份。返回空字符串您的设备型号是什么。?检查此选项是的。尝试了它,它显示未知,我只是想知道imo应用程序如何在同一时间访问我的号码device@Martin那么我认为你的应用程序是不可能的Martin先生,尝试以下方法:TelephonyManager telemanger=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);字符串getSimSerialNumber=telemanger.getSimSerialNumber();字符串getSimNumber=telemanger.getLine1Number();它给出了一个错误“无法解析符号oneTelephonyManager”传递您的活动,如下所示:TelephonyManager tManager=(TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE);
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
public class MainActivity extends AppCompatActivity {
Activity mActivity;
String mStatus;
private TextView mSmiTxt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mActivity = MainActivity.this;
mSmiTxt = (TextView) this.findViewById(R.id.smitxt);
mStatus=loadSMI1();
mSmiTxt.setText(mStatus);
/** Fading Transition Effect */
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
/**
* Called when the 'loadIMEI' function is triggered.
*/
public void loadIMEI() {
// Check if the READ_PHONE_STATE permission is already available.
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED) {
// READ_PHONE_STATE permission has not been granted.
requestReadPhoneStatePermission();
} else {
// READ_PHONE_STATE permission is already been granted.
loadImei();
}
}
public String getDeviceUniqueID() {
String device_unique_id = Settings.Secure.getString(getContentResolver(),
Settings.Secure.ANDROID_ID);
return device_unique_id;
}
private void requestReadPhoneStatePermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_PHONE_STATE)) {
// Provide an additional rationale to the user if the permission was not granted
// and the user would benefit from additional context for the use of the permission.
// For example if the user has previously denied the permission.
new AlertDialog.Builder(MainActivity.this)
.setTitle("Permission Request")
.setMessage(getString(R.string.permission_read_phone_state_rationale))
.setCancelable(false)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//re-request
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
}
})
.setIcon(R.drawable.error)
.show();
} else {
// READ_PHONE_STATE permission has not been granted yet. Request it directly.
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE},
MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
}
}
/**
* Callback received when a permissions request has been completed.
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (requestCode == MY_PERMISSIONS_REQUEST_READ_PHONE_STATE) {
// Received permission result for READ_PHONE_STATE permission.est.");
// Check if the only required permission has been granted
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// READ_PHONE_STATE permission has been granted, proceed with displaying IMEI Number
//alertAlert(getString(R.string.permision_available_read_phone_state));
loadImei();
} else {
alertAlert(getString(R.string.permissions_not_granted_read_phone_state));
}
}
}
public String loadImei() {
//Have an object of TelephonyManager
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
//Get IMEI Number of Phone //////////////// for this example i only need the IMEI
String IMEINumber = tm.getDeviceId();
return IMEINumber;
}
private void alertAlert(String msg) {
new AlertDialog.Builder(MainActivity.this)
.setTitle("Permission Request")
.setMessage(msg)
.setCancelable(false)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do somthing here
}
})
.setIcon(R.drawable.error)
.show();
}
public String loadSMI1() {
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String sim1 = tm.getLine1Number();
return sim1;
}
}
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccounts();
ArrayList<String> googleAccounts = new ArrayList<String>();
for (Account ac : accounts) {
String acname = ac.name;
String actype = ac.type;
// Take your time to look at all available accounts
System.out.println("Accounts : " + acname + ", " + actype);
}
if(actype.equals("com.whatsapp")){
String phoneNumber = ac.name;
}