Java 我无法从我的设备上获取IMEI我的API级别是24,操作系统是牛轧糖

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

我正在尝试查找我的IMEI no,但无法从我的设备获取此代码。我在android清单中提供了我的个人信息,但仍然找不到。任何帮助都将不胜感激

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
)。不应超过我应该做什么(在最新编辑之前)包含建议您应该如何正确处理权限请求的注释,因此我感到奇怪的是,您没有尝试执行注释建议的操作。请帮助我。您可以在此处发布完整的活动代码吗?因为不清楚您从何处调用第二个代码块。