-1

此代码适用于我的手机。但它不适用于我朋友的手机。我也有权限。我得到这个错误;

用户 10109 和当前进程都没有 android.permission.READ_PHONE_STATE。

允许 ;

    <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

这是我的代码;

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    IMEI= telephonyManager.getDeviceId();
4

2 回答 2

1

这可能是因为您的朋友在 Android 6.0(API 级别 23)上运行。您需要在运行时添加权限以及Manifest.

从 Android 6.0(API 级别 23)开始,用户在应用运行时授予应用权限,而不是在安装应用时。这种方法简化了应用程序安装过程,因为用户在安装或更新应用程序时不需要授予权限。它还使用户可以更好地控制应用程序的功能;例如,用户可以选择让相机应用程序访问相机而不是设备位置。用户可以通过进入应用程序的设置屏幕随时撤销权限。

请参阅此处了解更多信息。也许看看这个问题,看看如何实现运行时权限,尽管它在第一个链接中也有解释。

于 2016-07-18T16:25:59.700 回答
1

根据新的棉花糖操作系统,您需要为“READ_SMS”配置运行时权限

像这样 :

String permission = Manifest.permission.READ_SMS;

    if (ContextCompat.checkSelfPermission(getContext(), permission) != PackageManager.PERMISSION_GRANTED){
        permissionList.add(permission);

        if (!ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), permission)){
            requestPermissions(new String[]{permission}), SMS_PERMISSION);
        }
    }
于 2016-07-18T16:27:06.630 回答