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

    <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 事件分发
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,718评论 25 709
  • 1,“文”字的上半部为“亠”部事业上出头早,聪明好学,但也可能帮他人出头,被他人利用。 2,下半部为一个相互交差的...
    陈奎罡阅读 2,018评论 0 0
  • 实现UIScrollViewDelegate的代理方法 - (void)scrollViewDidScroll:(...
    tinaH阅读 790评论 0 3
  • **小时候** 从我5岁开始我就开始不开心了,因为我有一个妹妹了。从姥姥妈妈开始不怎么给我买好吃的好玩的时候我...
    斜一一阅读 629评论 2 1
  • 电影中的救赎,应该至少包含两层含义。第一层是救赎对体制化的人,重新获得希望,代表人物是Red,他可以说非常熟悉监狱...
    给自己写的故事阅读 373评论 0 0