1、点亮屏幕+跳过滑动锁屏;
要实现软电话的来电界面,响铃亮屏之类的需求,看到微信语音通话能实现android端的跳过滑动锁屏(密码、手势密码类的没法子了)
从一个 伪装来电的应用里“学”了一部分代码片段,大致实现了这个需求;
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
wlock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK
|PowerManager.ACQUIRE_CAUSES_WAKEUP, "incomingcall");
wlock.acquire();
klock = ((KeyguardManager)
getSystemService(KEYGUARD_SERVICE)).newKeyguardLock("Incomingcall");
klock.disableKeyguard();
别忘了 离开时释放这两个 lock.
还有相关权限
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
上面的方案存在问题,设置了密码/图案/指纹 后无法弹出
方案二,在来电Activity的 setContentView 前 加入
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON|
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
方案二 在小米和魅族上搞不起来,因为这俩货增加了锁屏显示权限,默认关(魅族默认询问)
oncreate(....
// 用方法一 亮屏,播放来电铃声,
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
|WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
这样可以解决小米上的情况,但是魅族搞不起来,addFlags后魅族根本这个Activity就不弹出了。。。。。
放弃,或者放弃魅族(为魅族使用方案一)
2、Library Module 引入 aar包的问题;
如果直接在 Library Module 增加
repositories { flatDir { dirs 'aars' } }
dependencies {
compile 'com.android.support:support-v4:23.4.0'
compile(name: 'xxx', ext: 'aar')
}
就会出现下面层级的 Library Module 都会出现引用问题
解决方案是
New Module , 把 aar 导入为 aar module, 在需要的工程应用该module
3、判断miui (获取miui版本)
// 不是 miui 则返回 空字符,miui则返回对应的版本
public static String getMiuiVersion() {
String line;
BufferedReader input = null;
try {
// 华为 emui 命令 “getprop ro.build.version.emui”
Process p = Runtime.getRuntime().exec("getprop ro.miui.ui.version.name");
input = new BufferedReader(new InputStreamReader(p.getInputStream()), 1024);
line = input.readLine();
input.close();
} catch (IOException ex) {
return null;
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
}
}
}
return line;
}
4、跳转当前应用的设置界面
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", this.getPackageName(), null);
intent.setData(uri);
startActivity(intent);
5、gradle 打包 bat [ANSI编码]
echo ######## start ########
call gradlew.bat clean
echo ################ 别急,才刚刚开始 ##################
set curr_dir=%cd%
TortoiseProc /command:update /path:"%curr_dir%" /closeonend:1
call gradlew.bat assembleRelease
set
echo %curr_dir%
set apk_dir=%curr_dir%\WindWCMS\wcmsMain\build\outputs\apk
echo
echo ############################################
echo ################ Build OK ##################
echo ############################################
echo ##### 到这里去找你的apk文件吧 - %apk_dir%
echo ############################################
echo
pause
6、Android 事件分发
Android 事件分发