@RequiresApi(api = 21) private final class CapabilityValidatedCallback extends ConnectivityManager.NetworkCallback { @Override public void onAvailable(Network network) { super.onAvailable(network); logd(RequirementsWatcher.this + " NetworkCallback.onAvailable"); checkRequirements(); } @Override public void onLost(Network network) { super.onLost(network); logd(RequirementsWatcher.this + " NetworkCallback.onLost"); checkRequirements(); } } }
@RequiresApi(26) static final class JobWorkEnqueuer extends TinkerJobIntentService.WorkEnqueuer { private final JobInfo mJobInfo; private final JobScheduler mJobScheduler; JobWorkEnqueuer(Context context, ComponentName cn, int jobId) { super(context, cn); ensureJobId(jobId); JobInfo.Builder b = new JobInfo.Builder(jobId, mComponentName); mJobInfo = b.setOverrideDeadline(0).build(); mJobScheduler = (JobScheduler) context.getApplicationContext().getSystemService( Context.JOB_SCHEDULER_SERVICE); } @Override void enqueueWork(Intent work) { if (DEBUG) Log.d(TAG, "Enqueueing work: " + work); mJobScheduler.enqueue(mJobInfo, new JobWorkItem(work)); } }
@RequiresApi(Build.VERSION_CODES.O) // class AndroidOFragmentRefWatcher implements FragmentRefWatcher {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public CollapsibleView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private class OutlineProvider extends ViewOutlineProvider { @Override public void getOutline(View view, Outline outline) { Rect bounds = new Rect(); mBorderRect.roundOut(bounds); outline.setRoundRect(bounds, bounds.width() / 2.0f); } }
@RequiresApi(Build.VERSION_CODES.KITKAT) void quickCallJs(String method, ValueCallback<String> callback, String... params);
@RequiresApi(Build.VERSION_CODES.KITKAT) @Override public int getAlpha() { return wrapped.getAlpha(); }
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) public static boolean checkReadStoragePermissions(Activity activity, int requestCode) { if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(activity, new String[]{ Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, requestCode); return false; } return true; }
/** android 6.0设置字体颜色 */ @RequiresApi(Build.VERSION_CODES.M) private static void darkModeForM(Window window, boolean dark) { // window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); // window.setStatusBarColor(Color.TRANSPARENT); int systemUiVisibility = window.getDecorView().getSystemUiVisibility(); if (dark) { systemUiVisibility |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; } else { systemUiVisibility &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; } window.getDecorView().setSystemUiVisibility(systemUiVisibility); }
@RequiresApi(Build.VERSION_CODES.LOLLIPOP) public BottomBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(context, attrs, defStyleAttr, defStyleRes); }
@RequiresApi(api = Build.VERSION_CODES.M) public static boolean hasPermission(Context context) { return Settings.canDrawOverlays(context); }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public void setColor(ColorStateList color) { this.colorStateList = color; getGradientDrawable().setColor(color); }
@RequiresApi(api = Build.VERSION_CODES.M) public boolean isAppWhitelisted() { return powerManager.isIgnoringBatteryOptimizations(packageName); } }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public void setStroke(int width, ColorStateList colorStateList) { setStroke(width, colorStateList, 0, 0); }
@RequiresApi(Build.VERSION_CODES.M) private void setAndAllowWhileIdle(int type, long triggerAtMillis, PendingIntent operation) { alarmManager.setAndAllowWhileIdle(type, triggerAtMillis, operation); }
@RequiresApi(api = 23) private void requestAlertWindowPermission() { Intent intent = new Intent("android.settings.action.MANAGE_OVERLAY_PERMISSION"); intent.setData(Uri.parse("package:" + getPackageName())); startActivityForResult(intent, 1); }
@RequiresApi(JELLY_BEAN_MR1) @SuppressLint("MissingPermission") @Override public void sendBroadcastAsUser(final Intent intent, final UserHandle user, final String receiverPermission) { mCondom.proceedBroadcast(this, intent, new CondomCore.WrappedProcedure() { @Override public void run() { CondomContext.super.sendBroadcastAsUser(intent, user, receiverPermission); }}, null); }
@RequiresApi(JELLY_BEAN_MR1) @SuppressLint("MissingPermission") @Override public void sendStickyOrderedBroadcastAsUser(final Intent intent, final UserHandle user, final BroadcastReceiver resultReceiver, final Handler scheduler, final int initialCode, final String initialData, final Bundle initialExtras) { mCondom.proceedBroadcast(this, intent, new CondomCore.WrappedProcedure() { @Override public void run() { CondomContext.super.sendStickyOrderedBroadcastAsUser(intent, user, resultReceiver, scheduler, initialCode, initialData, initialExtras); }}, resultReceiver); }
@RequiresApi(JELLY_BEAN_MR1) @SuppressLint("MissingPermission") @Override public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { mBase.sendOrderedBroadcastAsUser(intent, user, receiverPermission, resultReceiver, scheduler, initialCode, initialData, initialExtras); }
@Override @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public void setOvalRectShape() { mStyleSetter.setOvalRectShape(); }