美文网首页
[Android]代码拾贝

[Android]代码拾贝

作者: javake | 来源:发表于2017-02-09 16:22 被阅读0次

    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]代码拾贝

          本文链接:https://www.haomeiwen.com/subject/qrfwittx.html