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