[Android]代码拾贝

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.
还有相关权限

    
    

上面的方案存在问题,设置了密码/图案/指纹 后无法弹出
方案二,在来电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]代码拾贝_第1张图片
Android 事件分发

你可能感兴趣的:([Android]代码拾贝)