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

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

源代码1 项目: android_9.0.0_r45   文件: ConnectivityManager.java
/** {@hide} */
public static final void enforceTetherChangePermission(Context context, String callingPkg) {
    Preconditions.checkNotNull(context, "Context cannot be null");
    Preconditions.checkNotNull(callingPkg, "callingPkg cannot be null");

    if (context.getResources().getStringArray(
            com.android.internal.R.array.config_mobile_hotspot_provision_app).length == 2) {
        // Have a provisioning app - must only let system apps (which check this app)
        // turn on tethering
        context.enforceCallingOrSelfPermission(
                android.Manifest.permission.TETHER_PRIVILEGED, "ConnectivityService");
    } else {
        int uid = Binder.getCallingUid();
        // If callingPkg's uid is not same as Binder.getCallingUid(),
        // AppOpsService throws SecurityException.
        Settings.checkAndNoteWriteSettingsOperation(context, uid, callingPkg,
                true /* throwException */);
    }
}
 
源代码2 项目: android_tv_metro   文件: Client.java
private static boolean isBackgroundInstall(Context context) {
	try {
		context.enforceCallingOrSelfPermission(
				android.Manifest.permission.INSTALL_PACKAGES, null);
		return true;
	} catch (SecurityException e) {
		return false;
	}
}
 
源代码3 项目: CSipSimple   文件: DeviceStateReceiver.java
@Override
public void onReceive(Context context, Intent intent) {

    PreferencesProviderWrapper prefWrapper = new PreferencesProviderWrapper(context);
    String intentAction = intent.getAction();

    //
    // ACTION_DATA_STATE_CHANGED
    // Data state change is used to detect changes in the mobile
    // network such as a switch of network type (GPRS, EDGE, 3G)
    // which are not detected by the Connectivity changed broadcast.
    //
    //
    // ACTION_CONNECTIVITY_CHANGED
    // Connectivity change is used to detect changes in the overall
    // data network status as well as a switch between wifi and mobile
    // networks.
    //
    if (/*intentAction.equals(ACTION_DATA_STATE_CHANGED) ||*/
            intentAction.equals(ConnectivityManager.CONNECTIVITY_ACTION) ||
            intentAction.equals(Intent.ACTION_BOOT_COMPLETED)) {
        
        if (prefWrapper.isValidConnectionForIncoming()
                &&
                !prefWrapper
                        .getPreferenceBooleanValue(PreferencesProviderWrapper.HAS_BEEN_QUIT)) {
            Log.d(THIS_FILE, "Try to start service if not already started");
            Intent sip_service_intent = new Intent(context, SipService.class);
            context.startService(sip_service_intent);
        }

    } else if (intentAction.equals(SipManager.INTENT_SIP_ACCOUNT_ACTIVATE)) {
        context.enforceCallingOrSelfPermission(SipManager.PERMISSION_CONFIGURE_SIP, null);

        long accId;
        accId = intent.getLongExtra(SipProfile.FIELD_ID, SipProfile.INVALID_ID);

        if (accId == SipProfile.INVALID_ID) {
            // allow remote side to send us integers.
            // previous call will warn, but that's fine, no worries
            accId = intent.getIntExtra(SipProfile.FIELD_ID, (int) SipProfile.INVALID_ID);
        }

        if (accId != SipProfile.INVALID_ID) {
            boolean active = intent.getBooleanExtra(SipProfile.FIELD_ACTIVE, true);
            ContentValues cv = new ContentValues();
            cv.put(SipProfile.FIELD_ACTIVE, active);
            int done = context.getContentResolver().update(
                    ContentUris.withAppendedId(SipProfile.ACCOUNT_ID_URI_BASE, accId), cv,
                    null, null);
            if (done > 0) {
                if (prefWrapper.isValidConnectionForIncoming()) {
                    Intent sipServiceIntent = new Intent(context, SipService.class);
                    context.startService(sipServiceIntent);
                }
            }
        }
    } else if (Intent.ACTION_PACKAGE_ADDED.equalsIgnoreCase(intentAction) ||
            Intent.ACTION_PACKAGE_REMOVED.equalsIgnoreCase(intentAction)) {
        CallHandlerPlugin.clearAvailableCallHandlers();
        RewriterPlugin.clearAvailableRewriters();
        ExtraPlugins.clearDynPlugins();
        PhoneCapabilityTester.deinit();
    } else if (APPLY_NIGHTLY_UPLOAD.equals(intentAction)) {
        NightlyUpdater nu = new NightlyUpdater(context);
        nu.applyUpdate(intent);
    }
}
 
源代码4 项目: AppOpsXposed   文件: FixWakeLock.java
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable
{
	final IBinder lock = (IBinder) param.args[0];
	final String tag = (String) param.args[2];
	final String packageName = param.args[3] instanceof String ?
			(String) param.args[3] : null;

	final int uid = Binder.getCallingUid();

	// Since we want this hack to replicate the expected behaviour,
	// we have to do some sanity checks first. On error we return
	// and let the hooked function throw an exception.

	if(lock == null || packageName == null)
		return;

	final Context ctx = getContextFromThis(param.thisObject);
	if(ctx == null)
		return;

	ctx.enforceCallingOrSelfPermission(
			android.Manifest.permission.WAKE_LOCK, null);

	final AppOpsManagerWrapper appOps = AppOpsManagerWrapper.from(ctx);
	if(appOps.checkOpNoThrow(AppOpsManagerWrapper.OP_WAKE_LOCK, uid, packageName) != AppOpsManager.MODE_ALLOWED)
	{
		if(tag != null && canAcquire(packageName, tag))
		{
			if(DEBUG)
			{
				log("Allowing acquisition of WakeLock '" + tag +
						"' for app " + packageName);
			}
			return;
		}

		if(DEBUG)
		{
			log("Prevented acquisition of WakeLock '" + tag +
					"' for app " + packageName);
		}

		param.setResult(null);
	}
}
 
 方法所在类
 同类方法