首次安装时无法获取 IMEI 号码
Can't get IMEI number on first install
我正在尝试获取 android device.I 的 IMEI 编号,我也可以获取它,但是应用程序在第一次安装时 return 没有 IMEI。
我需要重新启动应用程序。
谁能告诉我我哪里错了?
提前致谢
public class RootActivity extends AppCompatActivity {
private static final int REQUEST_PERMISSION_PHONE_STATE = 1;
TextView tv ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.TV_imei);
tv.setText(showPhoneStatePermission());
}private String showPhoneStatePermission() {
String imei ="ERROR";
int permissionCheck = ContextCompat.checkSelfPermission(
this, Manifest.permission.READ_PHONE_STATE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_PERMISSION_PHONE_STATE);
} else {
imei=getIMEI();
}
return imei;
}
private String getIMEI() {
TelephonyManager telephonyManager = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
@SuppressLint("MissingPermission") String deviceId = telephonyManager.getDeviceId().trim();
return deviceId;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
showPhoneStatePermission();
}
}
tv.setText(showPhoneStatePermission())
只会在 OnCreate()
中调用一次。在 onRequestPermissionsResult
中授予权限后,您没有设置 text 。
您需要在 onRequestPermissionsResult
之后调用 setText()
。
您可以使用
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
tv.setText(showPhoneStatePermission());
}
如果这只是一个样本,那好吧。如果不是,那么您的代码中缺少权限处理。您也需要处理 Rational。看看
我正在尝试获取 android device.I 的 IMEI 编号,我也可以获取它,但是应用程序在第一次安装时 return 没有 IMEI。 我需要重新启动应用程序。 谁能告诉我我哪里错了? 提前致谢
public class RootActivity extends AppCompatActivity {
private static final int REQUEST_PERMISSION_PHONE_STATE = 1;
TextView tv ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.TV_imei);
tv.setText(showPhoneStatePermission());
}private String showPhoneStatePermission() {
String imei ="ERROR";
int permissionCheck = ContextCompat.checkSelfPermission(
this, Manifest.permission.READ_PHONE_STATE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_PERMISSION_PHONE_STATE);
} else {
imei=getIMEI();
}
return imei;
}
private String getIMEI() {
TelephonyManager telephonyManager = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
@SuppressLint("MissingPermission") String deviceId = telephonyManager.getDeviceId().trim();
return deviceId;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
showPhoneStatePermission();
}
}
tv.setText(showPhoneStatePermission())
只会在 OnCreate()
中调用一次。在 onRequestPermissionsResult
中授予权限后,您没有设置 text 。
您需要在 onRequestPermissionsResult
之后调用 setText()
。
您可以使用
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
tv.setText(showPhoneStatePermission());
}
如果这只是一个样本,那好吧。如果不是,那么您的代码中缺少权限处理。您也需要处理 Rational。看看