Android許可權管理工具類

來源:互聯網
上載者:User

標籤:stc   else   requests   class   self   new   man   手機   工具   

package cc.vv.btongbaselibrary.util;

import android.Manifest;
import android.app.Activity;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;

/**
* 許可權處理
* Created by nanPengFei on 2016/12/21 14:11.
*/
public class LKPermissionUtil {
private static LKPermissionUtil mInstance;

private LKPermissionUtil() {
}

public static LKPermissionUtil getInstance() {
if (null == mInstance) {
synchronized (LKPermissionUtil.class) {
if (null == mInstance) {
mInstance = new LKPermissionUtil();
}
}
}
return mInstance;
}


/**
* 判斷是否擁有某種許可權,第一次沒有則彈窗詢問,使用者拒絕後,
* 請到對應的Activity中重寫onRequestPermissionsResult進行判斷requestCode值進行相應提示
*
* @param activity
* @param permission
* @param requestCode
* @return
*/
private boolean requestPermission(Activity activity, String[] permission, int requestCode) {
boolean isHasPermission = false;//預設沒有許可權
if (ContextCompat.checkSelfPermission(activity, permission[0]) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity, permission, requestCode);
} else {
isHasPermission = true;
}
return isHasPermission;
}

/*關於許可權申請*/
public static final int REQUEST_PERMISSION_CAMERA = 501;//相機許可權申請
public static final int REQUEST_PERMISSION_SD = 502;//SD卡許可權申請
public static final int REQUEST_PERMISSION_AUDIO = 503;//錄音許可權申請
public static final int REQUEST_PERMISSION_LOCATION = 504;//定位許可權申請
public static final int REQUEST_PERMISSION_FILESYSTEMS = 505;//掛載SD卡許可權申請
public static final int REQUEST_PERMISSION_CONTACTS = 506;//擷取讀取手機通訊錄
//擷取撥打到電話許可權
public static final int REQUEST_PERMISSION_CALL = 507;

/**
* 相機許可權申請
*
* @param activity
* @return
*/
public boolean requestCamera(Activity activity) {
return requestPermission(activity,
new String[]{Manifest.permission.CAMERA
}, REQUEST_PERMISSION_CAMERA);
}

/**
* SD卡許可權申請
*
* @param activity
* @return
*/
public boolean requestSD(Activity activity) {
return requestPermission(activity,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
}, REQUEST_PERMISSION_SD);
}

/**
* 錄音許可權申請
*
* @param activity
* @return
*/
public boolean requestAudio(Activity activity) {
return requestPermission(activity,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO
}, REQUEST_PERMISSION_AUDIO);
}

/**
* 定位許可權申請
*
* @param activity
* @return
*/
public boolean requestLocation(Activity activity) {
return requestPermission(activity,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
}, REQUEST_PERMISSION_LOCATION);
}

/**
* 連絡人許可權申請
*
* @param activity
* @return
*/
public boolean requestContacts(Activity activity) {
return requestPermission(activity,
new String[]{Manifest.permission.READ_CONTACTS,
Manifest.permission.WRITE_CONTACTS
}, REQUEST_PERMISSION_CONTACTS);
}

/**
* 掛載SD卡許可權申請
*
* @param activity
* @return
*/
public boolean requestFilesystems(Activity activity) {
return requestPermission(activity,
new String[]{Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS
}, REQUEST_PERMISSION_FILESYSTEMS);
}

/**
* 擷取撥打到電話許可權
*/
public boolean requestCallPhone(Activity activity) {
return requestPermission(activity, new String[]{Manifest.permission.CALL_PHONE},
REQUEST_PERMISSION_CALL);
}

/**
* 申請提供的所有許可權
*
* @param activity
*/
public void requestAll(Activity activity) {
requestPermission(activity,
new String[]{Manifest.permission.CAMERA
, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO,
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.READ_CONTACTS,
Manifest.permission.WRITE_CONTACTS, Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS,
Manifest.permission.CALL_PHONE},
REQUEST_PERMISSION_CAMERA);
}
}

Android許可權管理工具類

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.