关于手机锁屏和解锁的问题,二者会打架的说 吗

可牛酸奶 2014-08-13 10:12:52

// 在这边进行锁屏、解锁事件
public void onShake() {

//判断当前是否为锁屏界面(Keyguard)
//flag判断当前屏幕锁是否被禁用了
if (mKeyguardManager.inKeyguardRestrictedInputMode()) {
Log.i("","处于锁屏状态!");
if(flag){
keyguardLock.disableKeyguard();//屏幕解锁
flag=false;
}

}else{
Log.i("","处于界面状态!");

if(!flag){
keyguardLock.reenableKeyguard();
flag=true;
}

//锁屏
if (keyguardLock != null) {
keyguardLock.disableKeyguard();

}

policyManager.lockNow();

if (keyguardLock != null) {
keyguardLock.reenableKeyguard();
}
}


}


我们看看以上代码 很明显第一次运行的时候是锁屏
第一次锁屏,解锁的时候一切都很ok
但是当第二次要锁屏的时候出现问题了:
屏幕完全没反应,仔细观察后发现并不是没反应 ,此时的状态其实是:屏幕灯亮着;屏幕锁被删掉了;最奇怪的是此时系统判定手机为锁屏且屏幕灯熄灭状态,所以也就不能再次触发解锁行为了

我做的是甩动锁屏解锁的功能 看到别人的应用没有甩动解锁功能是因为以上原因吗 哎
...全文
193 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sagittarius1988 2014-08-15
  • 打赏
  • 举报
回复
引用 10 楼 keniusuannai 的回复:
[quote=引用 9 楼 sagittarius1988 的回复:] 你可以试试360是对哪个权限误报木马啊
已经测试过了 就是权限的问题 怎么办呢[/quote] 估计是android.permission.BIND_DEVICE_ADMIN这个权限,锁屏不需要这个的吧
sagittarius1988 2014-08-14
  • 打赏
  • 举报
回复
引用 2 楼 keniusuannai 的回复:
[quote=引用 1 楼 sagittarius1988 的回复:] //锁屏 if (keyguardLock != null) { keyguardLock.disableKeyguard(); } policyManager.lockNow(); if (keyguardLock != null) { keyguardLock.reenableKeyguard(); } 你这个先锁屏又解锁干嘛呢
哦哦 因为一般直接locknow的话 手机锁屏之后屏幕灯又会马上亮起来 去网上查了一下 说加了这两句就能成功 我试了一下确实可以直接锁屏并且事后不会屏幕灯亮了
if (keyguardLock != null) {
				keyguardLock.disableKeyguard();

			}

			policyManager.lockNow();// 直接锁屏  

			if (keyguardLock != null) {
				keyguardLock.reenableKeyguard();
			}
[/quote] 有没有用到PowerManager呢?我记得要release才能恢复原来的状态的 或者直接写数据库进行锁屏
public void setLockPatternEnabled(boolean enabled) {  
        setBoolean(android.provider.Settings.System.LOCK_PATTERN_ENABLED,  
                enabled);  
    }  
private void setBoolean(String systemSettingKey, boolean enabled) {  
        android.provider.Settings.System.putInt(mContentResolver,  
                systemSettingKey, enabled ? 1 : 0);  
    }
systemSettingKey就是android.provider.Settings.System.LOCK_PATTERN_ENABLED
可牛酸奶 2014-08-14
  • 打赏
  • 举报
回复
引用 9 楼 sagittarius1988 的回复:
你可以试试360是对哪个权限误报木马啊
已经测试过了 就是权限的问题 怎么办呢
icyblood198999 2014-08-14
  • 打赏
  • 举报
回复
为啥在else里面写的如此复杂……没太理解。
可牛酸奶 2014-08-14
  • 打赏
  • 举报
回复
引用 1 楼 sagittarius1988 的回复:
//锁屏 if (keyguardLock != null) { keyguardLock.disableKeyguard(); } policyManager.lockNow(); if (keyguardLock != null) { keyguardLock.reenableKeyguard(); } 你这个先锁屏又解锁干嘛呢
哦哦 因为一般直接locknow的话 手机锁屏之后屏幕灯又会马上亮起来 去网上查了一下 说加了这两句就能成功 我试了一下确实可以直接锁屏并且事后不会屏幕灯亮了
if (keyguardLock != null) {
				keyguardLock.disableKeyguard();

			}

			policyManager.lockNow();// 直接锁屏  

			if (keyguardLock != null) {
				keyguardLock.reenableKeyguard();
			}
sagittarius1988 2014-08-14
  • 打赏
  • 举报
回复
//锁屏 if (keyguardLock != null) { keyguardLock.disableKeyguard(); } policyManager.lockNow(); if (keyguardLock != null) { keyguardLock.reenableKeyguard(); } 你这个先锁屏又解锁干嘛呢
sagittarius1988 2014-08-14
  • 打赏
  • 举报
回复
你可以试试360是对哪个权限误报木马啊
可牛酸奶 2014-08-14
  • 打赏
  • 举报
回复
引用 7 楼 sagittarius1988 的回复:
[quote=引用 6 楼 keniusuannai 的回复:] [quote=引用 4 楼 sagittarius1988 的回复:] [quote=引用 2 楼 keniusuannai 的回复:] [quote=引用 1 楼 sagittarius1988 的回复:] //锁屏 if (keyguardLock != null) { keyguardLock.disableKeyguard(); } policyManager.lockNow(); if (keyguardLock != null) { keyguardLock.reenableKeyguard(); } 你这个先锁屏又解锁干嘛呢
哦哦 因为一般直接locknow的话 手机锁屏之后屏幕灯又会马上亮起来 去网上查了一下 说加了这两句就能成功 我试了一下确实可以直接锁屏并且事后不会屏幕灯亮了
if (keyguardLock != null) {
				keyguardLock.disableKeyguard();

			}

			policyManager.lockNow();// 直接锁屏  

			if (keyguardLock != null) {
				keyguardLock.reenableKeyguard();
			}
[/quote] 有没有用到PowerManager呢?我记得要release才能恢复原来的状态的 或者直接写数据库进行锁屏
public void setLockPatternEnabled(boolean enabled) {  
        setBoolean(android.provider.Settings.System.LOCK_PATTERN_ENABLED,  
                enabled);  
    }  
private void setBoolean(String systemSettingKey, boolean enabled) {  
        android.provider.Settings.System.putInt(mContentResolver,  
                systemSettingKey, enabled ? 1 : 0);  
    }
systemSettingKey就是android.provider.Settings.System.LOCK_PATTERN_ENABLED[/quote] 感觉好强大 但是没时间了 我现在应用被360爆出木马了 怎么办 是因为我加了两个权限的原因吗 这是我的清单文件 大神帮忙看看
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.shake_lock"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.activity.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver
            android:name="com.example.broadcast.AdminReceiver"
            android:description="@string/sample_device_admin_description"
            android:label="@string/sample_device_admin"
            android:permission="android.permission.BIND_DEVICE_ADMIN" >
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/device_admin_sample" />

            <intent-filter>
                <action android:name="android.app.action.ACTION_ADD_DEVICE_ADMIN" />
            </intent-filter>
        </receiver>
    </application>

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

</manifest>
[/quote] 你把权限去掉试试就知道了[/quote] 怎么可以 权限是关于锁屏的呢
sagittarius1988 2014-08-14
  • 打赏
  • 举报
回复
引用 6 楼 keniusuannai 的回复:
[quote=引用 4 楼 sagittarius1988 的回复:] [quote=引用 2 楼 keniusuannai 的回复:] [quote=引用 1 楼 sagittarius1988 的回复:] //锁屏 if (keyguardLock != null) { keyguardLock.disableKeyguard(); } policyManager.lockNow(); if (keyguardLock != null) { keyguardLock.reenableKeyguard(); } 你这个先锁屏又解锁干嘛呢
哦哦 因为一般直接locknow的话 手机锁屏之后屏幕灯又会马上亮起来 去网上查了一下 说加了这两句就能成功 我试了一下确实可以直接锁屏并且事后不会屏幕灯亮了
if (keyguardLock != null) {
				keyguardLock.disableKeyguard();

			}

			policyManager.lockNow();// 直接锁屏  

			if (keyguardLock != null) {
				keyguardLock.reenableKeyguard();
			}
[/quote] 有没有用到PowerManager呢?我记得要release才能恢复原来的状态的 或者直接写数据库进行锁屏
public void setLockPatternEnabled(boolean enabled) {  
        setBoolean(android.provider.Settings.System.LOCK_PATTERN_ENABLED,  
                enabled);  
    }  
private void setBoolean(String systemSettingKey, boolean enabled) {  
        android.provider.Settings.System.putInt(mContentResolver,  
                systemSettingKey, enabled ? 1 : 0);  
    }
systemSettingKey就是android.provider.Settings.System.LOCK_PATTERN_ENABLED[/quote] 感觉好强大 但是没时间了 我现在应用被360爆出木马了 怎么办 是因为我加了两个权限的原因吗 这是我的清单文件 大神帮忙看看
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.shake_lock"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.activity.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver
            android:name="com.example.broadcast.AdminReceiver"
            android:description="@string/sample_device_admin_description"
            android:label="@string/sample_device_admin"
            android:permission="android.permission.BIND_DEVICE_ADMIN" >
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/device_admin_sample" />

            <intent-filter>
                <action android:name="android.app.action.ACTION_ADD_DEVICE_ADMIN" />
            </intent-filter>
        </receiver>
    </application>

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

</manifest>
[/quote] 你把权限去掉试试就知道了
可牛酸奶 2014-08-14
  • 打赏
  • 举报
回复
引用 4 楼 sagittarius1988 的回复:
[quote=引用 2 楼 keniusuannai 的回复:] [quote=引用 1 楼 sagittarius1988 的回复:] //锁屏 if (keyguardLock != null) { keyguardLock.disableKeyguard(); } policyManager.lockNow(); if (keyguardLock != null) { keyguardLock.reenableKeyguard(); } 你这个先锁屏又解锁干嘛呢
哦哦 因为一般直接locknow的话 手机锁屏之后屏幕灯又会马上亮起来 去网上查了一下 说加了这两句就能成功 我试了一下确实可以直接锁屏并且事后不会屏幕灯亮了
if (keyguardLock != null) {
				keyguardLock.disableKeyguard();

			}

			policyManager.lockNow();// 直接锁屏  

			if (keyguardLock != null) {
				keyguardLock.reenableKeyguard();
			}
[/quote] 有没有用到PowerManager呢?我记得要release才能恢复原来的状态的 或者直接写数据库进行锁屏
public void setLockPatternEnabled(boolean enabled) {  
        setBoolean(android.provider.Settings.System.LOCK_PATTERN_ENABLED,  
                enabled);  
    }  
private void setBoolean(String systemSettingKey, boolean enabled) {  
        android.provider.Settings.System.putInt(mContentResolver,  
                systemSettingKey, enabled ? 1 : 0);  
    }
systemSettingKey就是android.provider.Settings.System.LOCK_PATTERN_ENABLED[/quote] 感觉好强大 但是没时间了 我现在应用被360爆出木马了 怎么办 是因为我加了两个权限的原因吗 这是我的清单文件 大神帮忙看看
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.shake_lock"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.activity.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver
            android:name="com.example.broadcast.AdminReceiver"
            android:description="@string/sample_device_admin_description"
            android:label="@string/sample_device_admin"
            android:permission="android.permission.BIND_DEVICE_ADMIN" >
            <meta-data
                android:name="android.app.device_admin"
                android:resource="@xml/device_admin_sample" />

            <intent-filter>
                <action android:name="android.app.action.ACTION_ADD_DEVICE_ADMIN" />
            </intent-filter>
        </receiver>
    </application>

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

</manifest>
可牛酸奶 2014-08-14
  • 打赏
  • 举报
回复
引用 3 楼 icyblood198999 的回复:
为啥在else里面写的如此复杂……没太理解。
好吧各种逻辑 我也很乱 现在已经优化一点了 但是当我把apk放到手机上安装的时候 360手机报木马了怎么把 听说加壳可以解决吗

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧