类android.annotation.TargetApi源码实例Demo

下面列出了怎么用android.annotation.TargetApi的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: SoloPi   文件: QikuUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context, int op) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 19) {
        AppOpsManager manager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
        try {
            Class clazz = AppOpsManager.class;
            Method method = clazz.getDeclaredMethod("checkOp", int.class, int.class, String.class);
            return AppOpsManager.MODE_ALLOWED == (int)method.invoke(manager, op, Binder.getCallingUid(), context.getPackageName());
        } catch (Exception e) {
            Log.e(TAG, Log.getStackTraceString(e));
        }
    } else {
        Log.e("", "Below API 19 cannot invoke!");
    }
    return false;
}
 
源代码2 项目: SoloPi   文件: MeizuUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean checkOp(Context context, int op) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 19) {
        AppOpsManager manager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
        try {
            Class clazz = AppOpsManager.class;
            Method method = clazz.getDeclaredMethod("checkOp", int.class, int.class, String.class);
            return AppOpsManager.MODE_ALLOWED == (int)method.invoke(manager, op, Binder.getCallingUid(), context.getPackageName());
        } catch (Exception e) {
            Log.e(TAG, Log.getStackTraceString(e));
        }
    } else {
        Log.e(TAG, "Below API 19 cannot invoke!");
    }
    return false;
}
 
源代码3 项目: YCScrollPager   文件: DirectionalViewPager.java
/**
 * 设置viewPager滑动动画持续时间
 * API>19
 */
@TargetApi(Build.VERSION_CODES.KITKAT)
public void setAnimationDuration(final int during){
    try {
        // viewPager平移动画事件
        Field mField = ViewPager.class.getDeclaredField("mScroller");
        mField.setAccessible(true);
        // 动画效果与ViewPager的一致
        Interpolator interpolator = new Interpolator() {
            @Override
            public float getInterpolation(float t) {
                t -= 1.0f;
                return t * t * t * t * t + 1.0f;
            }
        };
        FixedSpeedScroller scroller = new FixedSpeedScroller(getContext(),
                interpolator, mRecentTouchTime);
        scroller.setDuration(during);
        mField.set(this, scroller);
    } catch (NoSuchFieldException | IllegalAccessException | IllegalArgumentException e) {
        e.printStackTrace();
    }
}
 
private boolean mayRequestContacts() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return true;
    }
    if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
        return true;
    }
    if (shouldShowRequestPermissionRationale(READ_CONTACTS)) {
        Snackbar.make(mEmailView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE)
                .setAction(android.R.string.ok, new View.OnClickListener() {
                    @Override
                    @TargetApi(Build.VERSION_CODES.M)
                    public void onClick(View v) {
                        requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
                    }
                });
    } else {
        requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
    }
    return false;
}
 
源代码5 项目: mollyim-android   文件: NotificationChannels.java
@TargetApi(26)
private static void onUpgrade(@NonNull NotificationManager notificationManager, int oldVersion, int newVersion) {
  Log.i(TAG, "Upgrading channels from " + oldVersion + " to " + newVersion);

  if (oldVersion < Version.MESSAGES_CATEGORY) {
    notificationManager.deleteNotificationChannel("messages");
    notificationManager.deleteNotificationChannel("calls");
    notificationManager.deleteNotificationChannel("locked_status");
    notificationManager.deleteNotificationChannel("backups");
    notificationManager.deleteNotificationChannel("other");
  }

  if (oldVersion < Version.CALLS_PRIORITY_BUMP) {
    notificationManager.deleteNotificationChannel("calls_v2");
  }
}
 
源代码6 项目: mollyim-android   文件: NotificationChannels.java
@TargetApi(26)
private static boolean updateExistingChannel(@NonNull NotificationManager notificationManager,
                                             @NonNull String channelId,
                                             @NonNull String newChannelId,
                                             @NonNull ChannelUpdater updater)
{
  NotificationChannel existingChannel = notificationManager.getNotificationChannel(channelId);
  if (existingChannel == null) {
    Log.w(TAG, "Tried to update a channel, but it didn't exist.");
    return false;
  }

  notificationManager.deleteNotificationChannel(existingChannel.getId());

  NotificationChannel newChannel = copyChannel(existingChannel, newChannelId);
  updater.update(newChannel);
  notificationManager.createNotificationChannel(newChannel);
  return true;
}
 
@TargetApi(VERSION_CODES.LOLLIPOP)
private int getViewInset() {
  try {
    Field attachInfoField = View.class.getDeclaredField("mAttachInfo");
    attachInfoField.setAccessible(true);
    Object attachInfo = attachInfoField.get(this);
    if (attachInfo != null) {
      Field stableInsetsField = attachInfo.getClass().getDeclaredField("mStableInsets");
      stableInsetsField.setAccessible(true);
      Rect insets = (Rect)stableInsetsField.get(attachInfo);
      return insets.bottom;
    }
  } catch (NoSuchFieldException nsfe) {
    Log.w(TAG, "field reflection error when measuring view inset", nsfe);
  } catch (IllegalAccessException iae) {
    Log.w(TAG, "access reflection error when measuring view inset", iae);
  }
  return 0;
}
 
源代码8 项目: TelePlus-Android   文件: EmbedBottomSheet.java
public boolean checkInlinePermissions() {
    if (parentActivity == null) {
        return false;
    }
    if (Build.VERSION.SDK_INT < 23 || Settings.canDrawOverlays(parentActivity)) {
        return true;
    } else {
        new AlertDialog.Builder(parentActivity).setTitle(LocaleController.getString("AppName", R.string.AppName))
                .setMessage(LocaleController.getString("PermissionDrawAboveOtherApps", R.string.PermissionDrawAboveOtherApps))
                .setPositiveButton(LocaleController.getString("PermissionOpenSettings", R.string.PermissionOpenSettings), new DialogInterface.OnClickListener() {
                    @TargetApi(Build.VERSION_CODES.M)
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        if (parentActivity != null) {
                            parentActivity.startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + parentActivity.getPackageName())));
                        }
                    }
                }).show();
    }
    return false;
}
 
源代码9 项目: MediaSDK   文件: Util.java
/**
 * Returns whether it may be possible to load the given URIs based on the network security
 * policy's cleartext traffic permissions.
 *
 * @param uris A list of URIs that will be loaded.
 * @return Whether it may be possible to load the given URIs.
 */
@TargetApi(24)
public static boolean checkCleartextTrafficPermitted(Uri... uris) {
  if (Util.SDK_INT < 24) {
    // We assume cleartext traffic is permitted.
    return true;
  }
  for (Uri uri : uris) {
    if ("http".equals(uri.getScheme())
        && !NetworkSecurityPolicy.getInstance()
            .isCleartextTrafficPermitted(Assertions.checkNotNull(uri.getHost()))) {
      // The security policy prevents cleartext traffic.
      return false;
    }
  }
  return true;
}
 
源代码10 项目: MediaSDK   文件: TrackSelectionParameters.java
@TargetApi(19)
private void setPreferredTextLanguageAndRoleFlagsToCaptioningManagerSettingsV19(
    Context context) {
  if (Util.SDK_INT < 23 && Looper.myLooper() == null) {
    // Android platform bug (pre-Marshmallow) that causes RuntimeExceptions when
    // CaptioningService is instantiated from a non-Looper thread. See [internal: b/143779904].
    return;
  }
  CaptioningManager captioningManager =
      (CaptioningManager) context.getSystemService(Context.CAPTIONING_SERVICE);
  if (captioningManager == null || !captioningManager.isEnabled()) {
    return;
  }
  preferredTextRoleFlags = C.ROLE_FLAG_CAPTION | C.ROLE_FLAG_DESCRIBES_MUSIC_AND_SOUND;
  Locale preferredLocale = captioningManager.getLocale();
  if (preferredLocale != null) {
    preferredTextLanguage = Util.getLocaleLanguageTag(preferredLocale);
  }
}
 
private boolean mayRequestContacts() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
        return true;
    }
    if (checkSelfPermission(READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
        return true;
    }
    if (shouldShowRequestPermissionRationale(READ_CONTACTS)) {
        Snackbar.make(mEmailView, R.string.permission_rationale, Snackbar.LENGTH_INDEFINITE)
                .setAction(android.R.string.ok, new View.OnClickListener() {
                    @Override
                    @TargetApi(Build.VERSION_CODES.M)
                    public void onClick(View v) {
                        requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
                    }
                });
    } else {
        requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);
    }
    return false;
}
 
源代码12 项目: TelePlus-Android   文件: ThemeActivity.java
private void showPermissionAlert(boolean byButton) {
    if (getParentActivity() == null) {
        return;
    }
    AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
    builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
    if (byButton) {
        builder.setMessage(LocaleController.getString("PermissionNoLocationPosition", R.string.PermissionNoLocationPosition));
    } else {
        builder.setMessage(LocaleController.getString("PermissionNoLocation", R.string.PermissionNoLocation));
    }
    builder.setNegativeButton(LocaleController.getString("PermissionOpenSettings", R.string.PermissionOpenSettings), new DialogInterface.OnClickListener() {
        @TargetApi(Build.VERSION_CODES.GINGERBREAD)
        @Override
        public void onClick(DialogInterface dialog, int which) {
            if (getParentActivity() == null) {
                return;
            }
            try {
                Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                intent.setData(Uri.parse("package:" + ApplicationLoader.applicationContext.getPackageName()));
                getParentActivity().startActivity(intent);
            } catch (Exception e) {
                FileLog.e(e);
            }
        }
    });
    builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
    showDialog(builder.create());
}
 
源代码13 项目: Tok-Android   文件: BoardManager.java
/**
 * Height of the bottom virtual keystroke bar
 */
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private int getNavigationBarHeight() {
    Resources resources = mActivity.getResources();
    int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
    return resources.getDimensionPixelSize(resourceId);
}
 
源代码14 项目: TelePlus-Android   文件: VoIPActivity.java
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == 101) {
        if(VoIPService.getSharedInstance()==null){
            finish();
            return;
        }
        if (grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            VoIPService.getSharedInstance().acceptIncomingCall();
            callAccepted();
        } else {
            if(!shouldShowRequestPermissionRationale(Manifest.permission.RECORD_AUDIO)){
                VoIPService.getSharedInstance().declineIncomingCall();
                VoIPHelper.permissionDenied(this, new Runnable(){
                    @Override
                    public void run(){
                        finish();
                    }
                });
                return;
            }
            acceptSwipe.reset();
        }
    }

}
 
源代码15 项目: TelePlus-Android   文件: CaptionStyleCompat.java
@TargetApi(21)
@SuppressWarnings("ResourceType")
private static CaptionStyleCompat createFromCaptionStyleV21(
    CaptioningManager.CaptionStyle captionStyle) {
  return new CaptionStyleCompat(
      captionStyle.hasForegroundColor() ? captionStyle.foregroundColor : DEFAULT.foregroundColor,
      captionStyle.hasBackgroundColor() ? captionStyle.backgroundColor : DEFAULT.backgroundColor,
      captionStyle.hasWindowColor() ? captionStyle.windowColor : DEFAULT.windowColor,
      captionStyle.hasEdgeType() ? captionStyle.edgeType : DEFAULT.edgeType,
      captionStyle.hasEdgeColor() ? captionStyle.edgeColor : DEFAULT.edgeColor,
      captionStyle.getTypeface());
}
 
源代码16 项目: TelePlus-Android   文件: MediaCodecInfo.java
@TargetApi(21)
private static boolean areSizeAndRateSupportedV21(VideoCapabilities capabilities, int width,
    int height, double frameRate) {
  return frameRate == Format.NO_VALUE || frameRate <= 0
      ? capabilities.isSizeSupported(width, height)
      : capabilities.areSizeAndRateSupported(width, height, frameRate);
}
 
源代码17 项目: xmall   文件: SystemWebViewClient.java
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
    try {
        // Check the against the whitelist and lock out access to the WebView directory
        // Changing this will cause problems for your application
        if (!parentEngine.pluginManager.shouldAllowRequest(url)) {
            LOG.w(TAG, "URL blocked by whitelist: " + url);
            // Results in a 404.
            return new WebResourceResponse("text/plain", "UTF-8", null);
        }

        CordovaResourceApi resourceApi = parentEngine.resourceApi;
        Uri origUri = Uri.parse(url);
        // Allow plugins to intercept WebView requests.
        Uri remappedUri = resourceApi.remapUri(origUri);

        if (!origUri.equals(remappedUri) || needsSpecialsInAssetUrlFix(origUri) || needsKitKatContentUrlFix(origUri)) {
            CordovaResourceApi.OpenForReadResult result = resourceApi.openForRead(remappedUri, true);
            return new WebResourceResponse(result.mimeType, "UTF-8", result.inputStream);
        }
        // If we don't need to special-case the request, let the browser load it.
        return null;
    } catch (IOException e) {
        if (!(e instanceof FileNotFoundException)) {
            LOG.e(TAG, "Error occurred while loading a file (returning a 404).", e);
        }
        // Results in a 404.
        return new WebResourceResponse("text/plain", "UTF-8", null);
    }
}
 
源代码18 项目: v9porn   文件: NotificationChannelHelper.java
@TargetApi(Build.VERSION_CODES.O)
private static void createNotificationChannel(Context context, String channelId, String channelName, int importance) {
    NotificationChannel channel = new NotificationChannel(channelId, channelName, importance);
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(
            NOTIFICATION_SERVICE);
    if (notificationManager == null) {
        return;
    }
    notificationManager.createNotificationChannel(channel);
}
 
源代码19 项目: graphics-samples   文件: ImageGridFragment.java
@TargetApi(VERSION_CODES.JELLY_BEAN)
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    final Intent i = new Intent(getActivity(), ImageDetailActivity.class);
    i.putExtra(ImageDetailActivity.EXTRA_IMAGE, (int) id);
    // makeThumbnailScaleUpAnimation() looks kind of ugly here as the loading spinner may
    // show plus the thumbnail image in GridView is cropped. so using
    // makeScaleUpAnimation() instead.
    startActivity(i, ActivityOptionsCompat
            .makeScaleUpAnimation(v, 0, 0, v.getWidth(), v.getHeight())
            .toBundle());
}
 
源代码20 项目: QNotified   文件: HookLoader.java
/**
 * 根据包名构建目标Context,并调用getPackageCodePath()来定位apk
 *
 * @param context           context参数
 * @param modulePackageName 当前模块包名
 * @return return apk file
 */
@TargetApi(Build.VERSION_CODES.FROYO)
private File findApkFile(Context context, String modulePackageName) {
    if (context == null) {
        return null;
    }
    try {
        Context moudleContext = context.createPackageContext(modulePackageName, Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
        String apkPath = moudleContext.getPackageCodePath();
        return new File(apkPath);
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
    }
    return null;
}
 
源代码21 项目: zom-android-matrix   文件: QrGenAsyncTask.java
@SuppressWarnings("deprecation")
  @TargetApi(13)
  @Override
  protected Void doInBackground(String... s) {
      String qrData = s[0];
      /*
      //Display display = activity.getWindowManager().getDefaultDisplay();

      Point outSize = new Point();
      int x, y, qrCodeDimension;
      if (Build.VERSION.SDK_INT >= 13) {
          view.getSize(outSize);
          x = outSize.x;
          y = outSize.y;
      } else {
          x = display.getWidth();
          y = display.getHeight();
      }
      if (x < y)
          qrCodeDimension = x;
      else
          qrCodeDimension = y;
      **/

//      Log.i(TAG, "generating QRCode Bitmap of " + qrCodeDimension + "x" + qrCodeDimension);
      QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(qrData, null,
              Contents.Type.TEXT, BarcodeFormat.QR_CODE.toString(), qrCodeDimension);

      try {
          qrBitmap = qrCodeEncoder.encodeAsBitmap();
      } catch (WriterException e) {
          Log.e(TAG, e.getMessage());
      }
      return null;
  }
 
源代码22 项目: tysq-android   文件: KeyboardUtils.java
/**
 * Unregister soft input changed listener.
 *
 * @param activity The activity.
 */
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public static void unregisterSoftInputChangedListener(final Activity activity) {
    final View contentView = activity.findViewById(android.R.id.content);
    contentView.getViewTreeObserver().removeOnGlobalLayoutListener(onGlobalLayoutListener);
    onSoftInputChangedListener = null;
    onGlobalLayoutListener = null;
}
 
源代码23 项目: SoloPi   文件: PermissionDialogActivity.java
@TargetApi(Build.VERSION_CODES.N)
private static Context updateResources(Context context) {

    Resources resources = context.getResources();
    Locale locale = LauncherApplication.getInstance().getLanguageLocale();

    Configuration configuration = resources.getConfiguration();
    configuration.setLocale(locale);
    configuration.setLocales(new LocaleList(locale));
    return context.createConfigurationContext(configuration);
}
 
源代码24 项目: grpc-nebula-java   文件: AndroidChannelBuilder.java
@GuardedBy("lock")
private void configureNetworkMonitoring() {
  // Android N added the registerDefaultNetworkCallback API to listen to changes in the device's
  // default network. For earlier Android API levels, use the BroadcastReceiver API.
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && connectivityManager != null) {
    final DefaultNetworkCallback defaultNetworkCallback = new DefaultNetworkCallback();
    connectivityManager.registerDefaultNetworkCallback(defaultNetworkCallback);
    unregisterRunnable =
        new Runnable() {
          @TargetApi(Build.VERSION_CODES.LOLLIPOP)
          @Override
          public void run() {
            connectivityManager.unregisterNetworkCallback(defaultNetworkCallback);
          }
        };
  } else {
    final NetworkReceiver networkReceiver = new NetworkReceiver();
    IntentFilter networkIntentFilter =
        new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
    context.registerReceiver(networkReceiver, networkIntentFilter);
    unregisterRunnable =
        new Runnable() {
          @TargetApi(Build.VERSION_CODES.LOLLIPOP)
          @Override
          public void run() {
            context.unregisterReceiver(networkReceiver);
          }
        };
  }
}
 
源代码25 项目: WebSocketClient   文件: MainActivity.java
/**
 * 获取通知权限,监测是否开启了系统通知
 *
 * @param context
 */
@TargetApi(Build.VERSION_CODES.KITKAT)
private boolean isNotificationEnabled(Context context) {

    String CHECK_OP_NO_THROW = "checkOpNoThrow";
    String OP_POST_NOTIFICATION = "OP_POST_NOTIFICATION";

    AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
    ApplicationInfo appInfo = context.getApplicationInfo();
    String pkg = context.getApplicationContext().getPackageName();
    int uid = appInfo.uid;

    Class appOpsClass = null;
    try {
        appOpsClass = Class.forName(AppOpsManager.class.getName());
        Method checkOpNoThrowMethod = appOpsClass.getMethod(CHECK_OP_NO_THROW, Integer.TYPE, Integer.TYPE,
                String.class);
        Field opPostNotificationValue = appOpsClass.getDeclaredField(OP_POST_NOTIFICATION);

        int value = (Integer) opPostNotificationValue.get(Integer.class);
        return ((Integer) checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg) == AppOpsManager.MODE_ALLOWED);

    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}
 
源代码26 项目: VehicleInfoOCR   文件: MainActivity.java
@TargetApi(19)
public void doFade() {
    if(canDoTransitions && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        // Get the root view and create a transition
        // Start recording changes to the view hierarchy
        TransitionManager.beginDelayedTransition(superContainer, mFade);
    }
}
 
源代码27 项目: AndroidWallet   文件: AppNetworkMgr.java
/**
 * 判断当前网络的具体类型是否是EHRPD
 *
 * @param context 上下文
 * @return false:当前网络的具体类型是否是EHRPD。false:当前没有网络连接或者具体类型不是EHRPD
 */
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static boolean isEHRPDBySubtype(Context context) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
        return false;
    } else {
        return getCurrentNetworkSubtype(context) ==
                TelephonyManager.NETWORK_TYPE_EHRPD;
    }
}
 
源代码28 项目: FimiX8-RE   文件: SecurePreferences.java
@TargetApi(11)
public android.content.SharedPreferences.Editor putStringSet(String key, Set<String> values) {
    Set<String> encryptedValues = new HashSet(values.size());
    for (String value : values) {
        encryptedValues.add(SecurePreferences.this.encrypt(value));
    }
    this.mEditor.putStringSet(SecurePreferences.hashPrefKey(key), encryptedValues);
    return this;
}
 
源代码29 项目: BigDataPlatform   文件: SystemWebChromeClient.java
@TargetApi(8)
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage)
{
    if (consoleMessage.message() != null)
        LOG.d(LOG_TAG, "%s: Line %d : %s" , consoleMessage.sourceId() , consoleMessage.lineNumber(), consoleMessage.message());
     return super.onConsoleMessage(consoleMessage);
}
 
源代码30 项目: FimiX8-RE   文件: SecurePreferences.java
@TargetApi(9)
public void apply() {
    if (VERSION.SDK_INT >= 9) {
        this.mEditor.apply();
    } else {
        commit();
    }
}