正常情況灯荧,權(quán)限被拒的情況下程序會拋出異常礁击,但是在MIUI上并不會,試了各種辦法逗载,最終用下面的代碼搞定了哆窿。
public void queryContacts(){
Cursor cursor = null;
try {
cursor = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null);
CrossProcessCursorWrapper ac = (CrossProcessCursorWrapper) cursor;
CursorWindow cw = ac.getWindow();
Log.e("ts", "CursorWindow:" + cw);
if (cw == null) {
Toast.makeText(this, "通訊錄權(quán)限被關(guān)閉", Toast.LENGTH_SHORT).show();
}
while (cursor.moveToNext()) {
String number = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.i("ts", "number:" + number);
}
} catch (Exception e) {
Log.e("ts", "queryContacts", e);
} finally {
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
}
}
這里以查詢通訊錄為例,其他權(quán)限也可以這樣處理