Android权限问题

时间:2016-07-18 16:24:34

标签: android android-manifest android-permissions android-security android-securityexception

这段代码在我的手机上运行。但它没有在我的朋友手机上工作。我也有许可。我收到此错误;

用户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();

2 个答案:

答案 0 :(得分:1)

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

  

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

有关详细信息,请参阅here。也许看看this question以了解如何实现运行时权限,尽管它也在第一个链接中进行了解释。

答案 1 :(得分:1)

根据新的marshmallow操作系统,您需要为“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);
        }
    }