您的位置:首页 > 移动开发 > Android开发

Android 积累

2015-10-29 15:55 405 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: