Java 我无法从我的设备上获取IMEI我的API级别是24,操作系统是牛轧糖
我正在尝试查找我的IMEI no,但无法从我的设备获取此代码。我在android清单中提供了我的个人信息,但仍然找不到。任何帮助都将不胜感激Java 我无法从我的设备上获取IMEI我的API级别是24,操作系统是牛轧糖,java,android,imei,Java,Android,Imei,我正在尝试查找我的IMEI no,但无法从我的设备获取此代码。我在android清单中提供了我的个人信息,但仍然找不到。任何帮助都将不胜感激 Context context; TextView imei_number; Button get_imei; String IMEI_Number_Holder; TelephonyManager telephonyManager; @Override protected void onCreate(Bundle savedInsta
Context context;
TextView imei_number;
Button get_imei;
String IMEI_Number_Holder;
TelephonyManager telephonyManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
imei_number = (TextView) findViewById(R.id.textView1);
get_imei = (Button) findViewById(R.id.button1);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 0);
} else {
//TODO
}
telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
get_imei.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.READ_PHONE_STATE},1);
IMEI_Number_Holder = telephonyManager.getDeviceId();
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
imei_number.setText(IMEI_Number_Holder);
}
});
}
}
我试过很多方法,但都不能得到,请帮帮我。这里是另一个代码,我已经尝试了这个代码,但得到的错误如下
原因:java.lang.SecurityException:getDeviceId:用户10183和当前进程都没有android.permission.READ\u PHONE\u状态
我该怎么做请指导我我在谷歌尝试了很多方法,但没有多少帮助。我的设备是OS是牛轧糖
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
String imeiNumber1 = tm.getDeviceId(1); //(API level 23)
String imeiNumber2 = tm.getDeviceId(2);
}
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
我已更新了您的
onClick
方法:
get_imei.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE}, READ_PHONE_STATE_REQUEST);
} else {
IMEI_Number_Holder = telephonyManager.getDeviceId();
imei_number.setText(IMEI_Number_Holder);
}
}
});
问题出在你行动的顺序上。如果
权限!=PackageManager.PERMISSION_grated
,意思是未授予,然后调用getDeviceId()
当您请求一个您还没有的权限时,您需要等到获得RequestPermissionResult
后再调用需要该权限的函数(即本例中的getDeviceId
)。不应超过我应该做什么(在最新编辑之前)包含建议您应该如何正确处理权限请求的注释,因此我感到奇怪的是,您没有尝试执行注释建议的操作。请帮助我。您可以在此处发布完整的活动代码吗?因为不清楚您从何处调用第二个代码块。