Android 6.0 相關問題

#1.java.lang.SecurityException: getDeviceId: Neither user 10063 nor current process has android.permission.READ_PHONE_STATE

java.lang.SecurityException: getDeviceId: Neither user 10063 nor current process has android.permission.READ_PHONE_STATE
at android.os.Parcel.readException(Parcel.java:1599)                                                                            at android.os.Parcel.readException(Parcel.java:1552)                                                                            at com.android.internal.telephony.ITelephony$Stub$Proxy.getDeviceId(ITelephony.java:4175                                                                             at android.telephony.TelephonyManager.getDeviceId(TelephonyManager.java:706                                                                             at com.alibaba.idst.nls.internal.common.DeviceId.getIMEI(DeviceId.java:105)                                                                           at com.alibaba.idst.nls.internal.common.DeviceId.generateDeviceId(DeviceId.java:56)                                                                             at com.alibaba.idst.nls.internal.common.DeviceId.getDeviceIdFromSettings(DeviceId.java:43)                                                                             at com.alibaba.idst.nls.internal.common.DeviceId.getDeviceId(DeviceId.java:34)                                                                             at com.alibaba.idst.nls.internal.ServiceStatusChecker$1.run(ServiceStatusChecker.java:65)

###原因
你在安卓6.0設備上跑了這個程序,並且編譯版本大於23,而且這個原因是在6.0中沒有給加上動態權限請求,你的應用在安裝到手機的時候將不會獲取任何權限!!!可以去查看應用的應用信息,其中的 Permissions 權限列表中所有的權限組都是關閉狀態。

###解決方案
1.可以將app/build.gradle中的 targetSdkVersion和compileSdkVersion設置爲22或以下版本
2.添加動態權限:

public class MainActivity extends AppCompatActivity implements ActivityCompat.OnRequestPermissionsResultCallback {}
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

		 requestReadPhonePermission();
    }
private void requestReadPhonePermission() {
        if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
		//在這裏面處理需要權限的代碼
        } else {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_READ_PHONE_STATE);
        }
    }

權限的結果處理

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode) {
            case REQUEST_READ_PHONE_STATE:
                if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
                    //TODO
                }
                break;

            default:
                break;
        }
    }

掃碼關注公衆號“偉大程序猿的誕生“,更多幹貨新鮮文章等着你~

公衆號回覆“資料獲取”,獲取更多幹貨哦~

有問題添加本人微信號“fenghuokeji996” 或掃描博客導航欄本人二維碼

發佈了97 篇原創文章 · 獲贊 961 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章