android.content.Context#checkSelfPermission ( )源码实例Demo

下面列出了android.content.Context#checkSelfPermission ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: Conversations   文件: PhoneHelper.java
public static Uri getProfilePictureUri(Context context) {
	if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context.checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
		return null;
	}
	final String[] projection = new String[]{Profile._ID, Profile.PHOTO_URI};
	final Cursor cursor;
	try {
		cursor = context.getContentResolver().query(Profile.CONTENT_URI, projection, null, null, null);
	} catch (Throwable e) {
		return null;
	}
	if (cursor == null) {
		return null;
	}
	final String uri = cursor.moveToFirst() ? cursor.getString(1) : null;
	cursor.close();
	return uri == null ? null : Uri.parse(uri);
}
 
private static FingerprintManager fingerprintUnlockSupported(Context ctx)
{
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return null;
    }
    if (ctx.checkSelfPermission(Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {
        return null;
    }

    FingerprintManager fpManager = (FingerprintManager) ctx.getSystemService(Context.FINGERPRINT_SERVICE);
    if (fpManager == null || !fpManager.isHardwareDetected() || !fpManager.hasEnrolledFingerprints()) {
        return null;
    }

    return fpManager;
}
 
@TargetApi(Build.VERSION_CODES.M)
private boolean requestFineLocationPermissionIfNeeded() {
    final Context context = getContext();
    if (context == null) return false;

    boolean permissionGranted = true;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        // Android Marshmallow Permission check

        if (context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            permissionGranted = false;
            if (mRequestLocationDialog != null) {
                mRequestLocationDialog.cancel();
                mRequestLocationDialog = null;
            }

            final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
            mRequestLocationDialog = builder.setTitle(R.string.bluetooth_locationpermission_title)
                    .setMessage(R.string.controller_sensor_locationpermission_text)
                    .setPositiveButton(android.R.string.ok, null)
                    .setOnDismissListener(dialog -> requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST_FINE_LOCATION))
                    .show();
        }
    }
    return permissionGranted;
}
 
源代码4 项目: wearmouse   文件: AvailableDevicesFragment.java
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
    try {
        addPreferencesFromResource(R.xml.prefs_available_devices);
    } finally {
        StrictMode.setThreadPolicy(oldPolicy);
    }

    Context context = getContext();
    bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    hidDataSender = HidDataSender.getInstance();
    hidDeviceProfile = hidDataSender.register(context, profileListener);

    initiateScanDevices = findPreference(KEY_PREF_BLUETOOTH_SCAN);
    availableDevices = (PreferenceGroup) findPreference(KEY_PREF_BLUETOOTH_AVAILABLE);
    availableDevices.setLayoutResource(R.layout.preference_group_no_title);

    initScanDevices(initiateScanDevices);
    initAvailableDevices();

    registerStateReceiver();

    if (context.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION)
            != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(
                new String[] {Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST);
    }
}
 
源代码5 项目: geopaparazzi   文件: PermissionRecieveSms.java
@Override
public boolean hasPermission(Context context) {
    if (canAskPermission) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            return context.checkSelfPermission(
                    Manifest.permission.RECEIVE_SMS) == PackageManager.PERMISSION_GRANTED;
        }
    }
    return true;
}
 
public static boolean hasPermission(Context c) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (c.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
            return true;
        }
    } else {
        return true;
    }
    return false;
}
 
源代码7 项目: geopaparazzi   文件: PermissionWriteStorage.java
@Override
public boolean hasPermission(Context context) {
    if (canAskPermission) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            return context.checkSelfPermission(
                    Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
        }
    }
    return true;
}
 
源代码8 项目: DeviceConnect-Android   文件: DConnectUtil.java
/**
 * Checks whether permission allow by user.
 *
 * @param context context of application
 * @return Returns true if permission allow, otherwise false
 */
public static boolean isPermission(final Context context) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return true;
    } else {
        boolean result = true;
        for (int i = 0; i < PERMISSIONS.length; i++) {
            if (context.checkSelfPermission(PERMISSIONS[i]) != PackageManager.PERMISSION_GRANTED) {
                result = false;
            }
        }
        return result;
    }
}
 
/**
 * 创建一个新的日历账户
 *
 * @return success:ACCOUNT ID , create failed:-1 , permission deny:-2
 */
private static long createCalendarAccount(Context context) {
    // 系统日历表
    Uri uri = CalendarContract.Calendars.CONTENT_URI;

    // 要创建的账户
    Uri accountUri;

    // 开始组装账户数据
    ContentValues account = new ContentValues();
    // 账户类型:本地
    // 在添加账户时,如果账户类型不存在系统中,则可能该新增记录会被标记为脏数据而被删除
    // 设置为ACCOUNT_TYPE_LOCAL可以保证在不存在账户类型时,该新增数据不会被删除
    account.put(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
    // 日历在表中的名称
    account.put(CalendarContract.Calendars.NAME, CALENDAR_NAME);
    // 日历账户的名称
    account.put(CalendarContract.Calendars.ACCOUNT_NAME, CALENDAR_ACCOUNT_NAME);
    // 账户显示的名称
    account.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, CALENDAR_DISPLAY_NAME);
    // 日历的颜色
    account.put(CalendarContract.Calendars.CALENDAR_COLOR, Color.parseColor("#515bd4"));
    // 用户对此日历的获取使用权限等级
    account.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
    // 设置此日历可见
    account.put(CalendarContract.Calendars.VISIBLE, 1);
    // 日历时区
    account.put(CalendarContract.Calendars.CALENDAR_TIME_ZONE, TimeZone.getDefault().getID());
    // 可以修改日历时区
    account.put(CalendarContract.Calendars.CAN_MODIFY_TIME_ZONE, 1);
    // 同步此日历到设备上
    account.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
    // 拥有者的账户
    account.put(CalendarContract.Calendars.OWNER_ACCOUNT, CALENDAR_ACCOUNT_NAME);
    // 可以响应事件
    account.put(CalendarContract.Calendars.CAN_ORGANIZER_RESPOND, 1);
    // 单个事件设置的最大的提醒数
    account.put(CalendarContract.Calendars.MAX_REMINDERS, 8);
    // 设置允许提醒的方式
    account.put(CalendarContract.Calendars.ALLOWED_REMINDERS, "0,1,2,3,4");
    // 设置日历支持的可用性类型
    account.put(CalendarContract.Calendars.ALLOWED_AVAILABILITY, "0,1,2");
    // 设置日历允许的出席者类型
    account.put(CalendarContract.Calendars.ALLOWED_ATTENDEE_TYPES, "0,1,2");

    /*
        TIP: 修改或添加ACCOUNT_NAME只能由SYNC_ADAPTER调用
        对uri设置CalendarContract.CALLER_IS_SYNCADAPTER为true,即标记当前操作为SYNC_ADAPTER操作
        在设置CalendarContract.CALLER_IS_SYNCADAPTER为true时,必须带上参数ACCOUNT_NAME和ACCOUNT_TYPE(任意)
     */
    uri = uri.buildUpon()
            .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
            .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, CALENDAR_ACCOUNT_NAME)
            .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE,
                    CalendarContract.Calendars.CALENDAR_LOCATION)
            .build();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        // 检查日历权限
        if (PackageManager.PERMISSION_GRANTED == context.checkSelfPermission(
                "android.permission.WRITE_CALENDAR")) {
            accountUri = context.getContentResolver().insert(uri, account);
        } else {
            return -2;
        }
    } else {
        accountUri = context.getContentResolver().insert(uri, account);
    }

    return accountUri == null ? -1 : ContentUris.parseId(accountUri);
}
 
源代码10 项目: NetGuard   文件: Util.java
public static boolean hasPhoneStatePermission(Context context) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
        return (context.checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED);
    else
        return true;
}
 
源代码11 项目: YCWebView   文件: SaveImageProcessor.java
private boolean hasExtStoragePermission(Context context) {
    return Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
            (context.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
                    context.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
}
 
源代码12 项目: SecondScreen   文件: NonRootUtils.java
public static boolean hasWriteSecureSettingsPermission(Context context) {
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
            && context.checkSelfPermission(Manifest.permission.WRITE_SECURE_SETTINGS) == PackageManager.PERMISSION_GRANTED;
}
 
源代码13 项目: XXPermissions   文件: PermissionUtils.java
/**
 * 获取没有授予的权限
 *
 * @param context               上下文对象
 * @param permissions           需要请求的权限组
 */
static ArrayList<String> getFailPermissions(Context context, List<String> permissions) {

    // 如果是安卓6.0以下版本就返回null
    if (!isOverMarshmallow()) {
        return null;
    }

    ArrayList<String> failPermissions = null;

    for (String permission : permissions) {

        // 检测安装权限
        if (Permission.REQUEST_INSTALL_PACKAGES.equals(permission)) {

            if (!isHasInstallPermission(context)) {
                if (failPermissions == null) {
                    failPermissions = new ArrayList<>();
                }
                failPermissions.add(permission);
            }
            continue;
        }

        // 检测悬浮窗权限
        if (Permission.SYSTEM_ALERT_WINDOW.equals(permission)) {

            if (!isHasOverlaysPermission(context)) {
                if (failPermissions == null) {
                    failPermissions = new ArrayList<>();
                }
                failPermissions.add(permission);
            }
            continue;
        }

        // 检测8.0的两个新权限
        if (Permission.ANSWER_PHONE_CALLS.equals(permission) || Permission.READ_PHONE_NUMBERS.equals(permission)) {

            // 检查当前的安卓版本是否符合要求
            if (!isOverOreo()) {
                continue;
            }
        }

        // 把没有授予过的权限加入到集合中
        if (context.checkSelfPermission(permission) == PackageManager.PERMISSION_DENIED) {
            if (failPermissions == null) {
                failPermissions = new ArrayList<>();
            }
            failPermissions.add(permission);
        }
    }

    return failPermissions;
}
 
源代码14 项目: DeviceConnect-Android   文件: PermissionUtility.java
/**
 * パーミッションの許諾リクエストを要求する.
 *
 * <p>
 * Android OS 6.0以上の端末では、このメソッドが呼び出されると内部でActivityが起動して、ユーザに対してパーミッションの許諾確認を行う。<br>
 * ユーザから許可された場合には、{@link org.deviceconnect.android.activity.PermissionUtility.PermissionRequestCallback#onSuccess}が呼び出され、
 * 拒否された場合には、{@link org.deviceconnect.android.activity.PermissionUtility.PermissionRequestCallback#onFail(String)}が呼び出される。
 * </p>
 * <p>
 * Android OS 6.0未満の端末では、{@link org.deviceconnect.android.activity.PermissionUtility.PermissionRequestCallback#onSuccess}が常に呼び出される。
 * </p>
 * <br>
 * サンプルコード:
 * <pre>
 * {@code
 * String[] permissions = new String[] {
 *     Manifest.permission.ACCESS_COARSE_LOCATION,
 *     Manifest.permission.ACCESS_FINE_LOCATION
 * }
 * 
 * PermissionUtility.requestPermissions(getActivity(), new Handler(),
 *         permissions,
 *         new PermissionUtility.PermissionRequestCallback() {
 *             public void onSuccess() {
 *                 // 許可された時の処理
 *             }
 *             public void onFail(final String deniedPermission) {
 *                 // 拒否された時の処理
 *             }
 *         });
 * }
 * </pre>
 * @param context コンテキスト
 * @param handler ハンドラー
 * @param permissions 許可を求めるパーミッション群
 * @param callback 許諾通知を行うコールバック
 */
public static void requestPermissions(@NonNull final Context context, @NonNull final Handler handler,
        @NonNull final String[] permissions, @NonNull final PermissionRequestCallback callback) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        callback.onSuccess();
    } else {
        Set<String> mPermissionSet = new HashSet<>(Arrays.asList(permissions));

        if (mPermissionSet.size() == 0) {
            callback.onSuccess();
            return;
        }
        Set<String> tmp = new HashSet<>(mPermissionSet);
        for (final String permission : tmp) {
            if (context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED) {
                mPermissionSet.remove(permission);
            }
        }
        if (mPermissionSet.size() == 0) {
            callback.onSuccess();
        } else {
            String[] missingPermissions = mPermissionSet.toArray(new String[mPermissionSet.size()]);
            PermissionRequestActivity.requestPermissions(context, missingPermissions, new ResultReceiver(handler) {
                @Override
                protected void onReceiveResult(final int resultCode, final Bundle resultData) {
                    String[] retPermissions = resultData.getStringArray(PermissionRequestActivity.EXTRA_PERMISSIONS);
                    int[] retGrantResults = resultData.getIntArray(PermissionRequestActivity.EXTRA_GRANT_RESULTS);
                    if (retPermissions == null || retGrantResults == null) {
                        callback.onFail(null);
                        return;
                    }
                    for (int i = 0; i < retPermissions.length; ++i) {
                        if (retGrantResults[i] == PackageManager.PERMISSION_DENIED) {
                            callback.onFail(retPermissions[i]);
                            return;
                        }
                    }
                    callback.onSuccess();
                }
            });
        }
    }
}
 
源代码15 项目: StatusSaver-for-Whatsapp   文件: PermissionUtil.java
public static boolean hasPermission(Context context, String permission){
    if (useRunTimePermissions()) {
        return context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED;
    }
    return true;
}
 
源代码16 项目: MNVideoPlayer   文件: PermissionUtils.java
/**
 * 获取没有授予的权限
 *
 * @param context               上下文对象
 * @param permissions           需要请求的权限组
 */
static ArrayList<String> getFailPermissions(Context context, List<String> permissions) {

    // 如果是安卓6.0以下版本就返回null
    if (!PermissionUtils.isOverMarshmallow()) {
        return null;
    }

    ArrayList<String> failPermissions = null;

    for (String permission : permissions) {

        // 检测安装权限
        if (permission.equals(Permission.REQUEST_INSTALL_PACKAGES)) {

            if (!isHasInstallPermission(context)) {
                if (failPermissions == null) failPermissions = new ArrayList<>();
                failPermissions.add(permission);
            }
            continue;
        }

        // 检测悬浮窗权限
        if (permission.equals(Permission.SYSTEM_ALERT_WINDOW)) {

            if (!isHasOverlaysPermission(context)) {
                if (failPermissions == null) failPermissions = new ArrayList<>();
                failPermissions.add(permission);
            }
            continue;
        }

        // 检测8.0的两个新权限
        if (permission.equals(Permission.ANSWER_PHONE_CALLS) || permission.equals(Permission.READ_PHONE_NUMBERS)) {

            // 检查当前的安卓版本是否符合要求
            if (!isOverOreo()) {
                continue;
            }
        }

        // 把没有授予过的权限加入到集合中
        if (context.checkSelfPermission(permission) == PackageManager.PERMISSION_DENIED) {
            if (failPermissions == null) failPermissions = new ArrayList<>();
            failPermissions.add(permission);
        }
    }

    return failPermissions;
}
 
源代码17 项目: Lassi-Android   文件: CropImage.java
/**
 * Check if explicetly requesting camera permission is required.<br>
 * It is required in Android Marshmellow and above if "CAMERA" permission is requested in the
 * manifest.<br>
 * See <a
 * href="http://stackoverflow.com/questions/32789027/android-m-camera-intent-permission-bug">StackOverflow
 * question</a>.
 */
public static boolean isExplicitCameraPermissionRequired(@NonNull Context context) {
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
            && hasPermissionInManifest(context, "android.permission.CAMERA")
            && context.checkSelfPermission(Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED;
}
 
Boolean isPermissionGiven(@NonNull Context context){

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
            return context.checkSelfPermission(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED;

        return true; //permission already request on install if < API 23
    }
 
源代码19 项目: giffun   文件: CropImage.java
/**
 * Check if the given picked image URI requires READ_EXTERNAL_STORAGE permissions.<br>
 * Only relevant for API version 23 and above and not required for all URI's depends on the
 * implementation of the app that was used for picking the image. So we just test if we can open
 * the stream or do we get an exception when we try, Android is awesome.
 *
 * @param context used to access Android APIs, like content resolve, it is your
 *     activity/fragment/widget.
 * @param uri the result URI of image pick.
 * @return true - required permission are not granted, false - either no need for permissions or
 *     they are granted
 */
public static boolean isReadExternalStoragePermissionsRequired(
    @NonNull Context context, @NonNull Uri uri) {
  return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
      && context.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
          != PackageManager.PERMISSION_GRANTED
      && isUriRequiresPermissions(context, uri);
}
 
源代码20 项目: Android-Image-Cropper   文件: CropImage.java
/**
 * Check if the given picked image URI requires READ_EXTERNAL_STORAGE permissions.<br>
 * Only relevant for API version 23 and above and not required for all URI's depends on the
 * implementation of the app that was used for picking the image. So we just test if we can open
 * the stream or do we get an exception when we try, Android is awesome.
 *
 * @param context used to access Android APIs, like content resolve, it is your
 *     activity/fragment/widget.
 * @param uri the result URI of image pick.
 * @return true - required permission are not granted, false - either no need for permissions or
 *     they are granted
 */
public static boolean isReadExternalStoragePermissionsRequired(
    @NonNull Context context, @NonNull Uri uri) {
  return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
      && context.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
          != PackageManager.PERMISSION_GRANTED
      && isUriRequiresPermissions(context, uri);
}
 
 方法所在类
 同类方法