Android 积累

1. 获取Tele Service并获取当前手机是否处于来电状态(FW层)

TelecomManager telecomManager = getTelecommService();
if (telecomManager != null && telecomManager.isRinging()) {
    Log.i(TAG, "Ignoring HOME; there's a ringing incoming call.");
    return -1;
}

2. 两种获取屏幕分辨率信息的方法:

DisplayMetrics metrics = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);

//这里得到的像素值是设备独立像素dp
//DisplayMetrics metrics=activity.getResources().getDisplayMetrics(); 这样获得的参数信息不正确,不要使用这种方式。
不能使用android.content.res.Resources.getSystem().getDisplayMetrics()。这个得到的宽和高是空的。

private void initResolutionStr(Context context) {
  if (ApiConfig.getResolutionStr() == null || ApiConfig.getResolutionStr().equals("")) {
      WindowManager winMgr = (WindowManager) context.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
      Display display = winMgr.getDefaultDisplay();
      int height = display.getHeight();
      int width = display.getWidth();
      String resolution = height > width ? height + "x" + width : width + "x" + height;
      ApiConfig.setResolutionStr(resolution);
      // densityDpi = 120dpi is ldpi, densityDpi = 160dpi is mdpi,
      // densityDpi = 240dpi is hdpi, densityDpi = 320dpi is xhdpi
      DisplayMetrics dm = new DisplayMetrics();
      getWindowManager().getDefaultDisplay().getMetrics(dm);
      int densityDpi = dm.densityDpi;
      ApiConfig.setDensityDpi(densityDpi);
  }
}

3. Android permission 相关

//This file describes all permissions defined by Android framework
frameworks/base/core/res/AndroidManifest.xml

//This file defines all Linux groups related to permission
frameworks/base/data/etc/platform.xml

//Define GID for Linux groups
/system/core/include/private/android_filesystem_config.h

The command to dump system permissions

adb shell pm list permissions

Share UID

为了减少运行进程的数量,方便应用间共享数据。可以让多个APP运行在相同的UID中
步骤:
1. Add “android:shareUserId” attribute in AndroidManifest.xml.
2. Sign all applications sharing the UID with the same certificate.
3. Note that shared UID applications will share all permissions.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.demo"
    android:sharedUserId="android.uid.system">

Notice:
1. 滥用无法获得的permission,有机会导致UID的所有APP的这个permission都会被revoke。即使这个权限其他的APP已经grant
例子:
package A 和package B共享UID。都声明了permission P。package A可以获得这个权限,但是package B不可以。PackageManager会revoke UID的permission P。
2. 不要共享system UID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值