当前位置: 首页 > 知识库问答 >
问题:

应用程序在请求READ_PHONE_STATE权限时发生IllegalStateException崩溃

胡安怡
2023-03-14

我需要捕获设备的IMEI和IMSI以及您已经知道的信息,这需要一个权限“android.permission.read_phone_state”。当这个对话框窗口向用户请求这个权限时,我的应用程序被停止了。怎么解决?

@SuppressLint("MissingPermission")
public void ListarApps(View view) throws PackageManager.NameNotFoundException {

    String myDeviceModel = android.os.Build.MODEL;
    String myDeviceProduct = android.os.Build.MANUFACTURER;
    String myVersion = Build.VERSION.RELEASE;
    System.out.println("Manufacturer: " + myDeviceProduct +
            " - Model: " + myDeviceModel + " - Android: " + myVersion);

    // Code For IMEI AND IMSI NUMBER ("android.permission.READ_PHONE_STATE")

    final int MY_PERMISSIONS_REQUEST_READ_PHONE_STATE = 999;

    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.READ_PHONE_STATE}, MY_PERMISSIONS_REQUEST_READ_PHONE_STATE);
        
        
    String serviceName = Context.TELEPHONY_SERVICE;
    TelephonyManager m_telephonyManager = (TelephonyManager) getSystemService(serviceName);
        
    String IMEI, IMSI;
        
    /*IMEI = m_telephonyManager.getDeviceId();
    IMSI = m_telephonyManager.getSubscriberId();  

    System.out.println("IMEI: " + IMEI);
    System.out.println("IMSI: " + IMSI);*/
}

更新2(AndroidManifest.xml文件):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.testando.teste">

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

共有1个答案

邓正真
2023-03-14

好吧,根据我的理解,您首先需要检查是否授予权限,然后为getdeviceid编写代码

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED) {
    // ask user permission 
} else {
    // READ_PHONE_STATE permission is already been granted.
    TelephonyManager mngr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    IMEI = mngr.getDeviceId();
}

您还需要重写OnRequestPermissionsResult

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        // READ_PHONE_STATE permission is already been granted.
        TelephonyManager mngr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        IMEI = mngr.getDeviceId();
    }
}
 类似资料:
  • 每当我请求权限时,我的应用程序就会崩溃。作为清单标记的子项,我在清单中定义了正确的使用权限。它没有给出任何错误,只是一个弹出窗口说包安装程序已经停止,监视器中有一行说“sendUserActionEvent()mView==null”,我不确定这与崩溃有关。 这是我请求权限的片段: 最低sdk设置为23,在三星Galaxy S7上进行测试。 你可以在这里看到完整的代码https://github.

  • 我正在使用permission_handler包请求对应用程序中存储的读取权限,在调试模式下一切工作正常,当我以“flutter run-release”运行代码时,问题就出现了,但当我将代码导出为apk时,权限对话框不会出现。我不知道我做错了什么请帮帮我!! 这是飞镖代码

  • 我目前正在开发适用于Android的即时应用程序,我想使用相机。我在片段中请求相机权限,但没有出现权限请求对话框。 这就是我在片段中请求权限的方式: 现在,我希望显示权限请求对话框,就像应用程序本身(com.android.Application)一样。不幸的是,它没有出现在即时应用程序(com.android.instantapp)中。 此外,我发现 调用,但使用grantResults[0]=

  • 当我在除我的计算机之外的任何计算机上运行此代码的发行版时,我得到“已经停止工作”错误:使用系统;使用System.Collections.Generic;使用System.ComponentModel;使用System.Data;使用System.Drawing;使用System.LINQ;使用System.Text;使用System.Threading.Tasks;使用System.Window

  • 我已在清单文件中添加了所有权限。在Lollipop中,所有应用程序都会在安装应用程序期间询问权限,但当应用程序安装在Marshmallow中时,权限不是询问。 清单权限是

  • 我正在使用谷歌应用程序默认凭据来获取使用Gmail API的标签列表。 当使用 命令在本地运行应用程序时,我在请求https://www.googleapis.com/gmail/v1/users/user40domain.com/labels?alt=json时获得 然后我部署了应用程序并尝试访问。但是当我请求https://www.googleapis.com/gmail/v1/users/u