android在6.0上的權限請求

在安卓的6.0上對權限做了改進,讓用戶知道你的程序正在請求什麼敏感的權限。那麼程序就要做一個適配,在as的自動生成代碼上活捉了一個權限請求的官方寫法,這個寫法在官方的文檔上也是有的,也有很詳細的介紹,我這裏就做一個記錄,至於什麼權限需要這樣寫,什麼權限不需要,這個去谷歌去吧,而且現在谷歌開發者的已經在中國有了cn域名,多多上去看看吧。

private boolean mayRequestContacts() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return true;
    }
    if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
        return true;
    }
    if (shouldShowRequestPermissionRationale(READ_CONTACTS)) {
        Snackbar.make(mEmailView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE)
                .setAction(android.R.string.ok, new View.OnClickListener() {
                    @Override
                    @TargetApi(Build.VERSION_CODES.M)
                    public void onClick(View v) {
                        requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
                    }
                });
    } else {
        requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
    }
    return false;
}


這個方法是需要override的,下面的註解還是寫得挺清楚的


/**
 * Callback received when a permissions request has been completed.
 */
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                       @NonNull int[] grantResults) {
    if (requestCode == REQUEST_READ_CONTACTS) {
        if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            populateAutoComplete();
        }
    }
}

private void populateAutoComplete() {
    if (!mayRequestContacts()) {
        return;
    }

    getLoaderManager().initLoader(0, null, this);
}


這個是請求通訊錄的一個例子,仿照來寫就好了


如果大家有什麼不明白的,想看看是怎麼樣的,可以到as上創建一個loginActivity就可以了,裏面會有官方寫好的代碼。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章