【问题标题】:Can't get IMEI number on first install首次安装时无法获取 IMEI 号码
【发布时间】:2019-02-24 15:38:53
【问题描述】:

我正在尝试获取 android 设备的 IMEI 号。我也可以获取它,但应用程序在第一次安装时没有返回 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();
    }

}

【问题讨论】:

    标签: android imei


    【解决方案1】:

    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-m-check-runtime-permission

    【讨论】:

    • 非常感谢。这是一个示例。不过,我也会处理 Rational。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2020-08-06
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    相关资源
    最近更新 更多