锁屏为Android不正常使用的是Android的是、不正常、Android

2023-09-08 08:48:53 作者:一世泪倾城

有关锁定屏幕编程采用了Android。我从#1 previous问题,对此一些好的想法,我做了一些事情,但是当我运行code,没有异常和错误。而且,屏幕上没有锁。好心有人指出我的错在这code 我的manifest.xml

for Lock Screen programmatically using Android. I got some good ideas from Stackoverflow previous questions regarding this, and I did some thing well, but when I run that code, there is No Exception and Error. but also , the screen didn't lock. kindly some one point my fault in this code My manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.top"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity 
        android:name=".LockActivity">
        </activity>
    <activity
        android:name=".LockActivity$Myclass"
        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=".LockActivity"
    android:label="device_admin"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data android:name="android.app.device_admin"
           android:resource="@xml/my_admin" />
<intent-filter>
    <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
</manifest>

我的类文件

package net.top;


 import android.app.Activity;
import android.app.KeyguardManager;

import android.app.KeyguardManager.KeyguardLock;
import android.app.admin.DeviceAdminReceiver;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.PowerManager;
import android.widget.Toast;

public class LockActivity extends DeviceAdminReceiver{

public void onEnabled(Context context, Intent intent) {
    showToast(context, "Sample Device Admin: enabled");
    }

    @Override
    public CharSequence onDisableRequested(Context context, Intent intent) {
    return "This is an optional message to warn the user about disabling.";
    }

    @Override
    public void onDisabled(Context context, Intent intent) {
    showToast(context, "Sample Device Admin: disabled");
    }
    void showToast(Context context, CharSequence msg) {
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();

    }

public static class Myclass extends Activity {

protected PowerManager.WakeLock mWakeLock;
DevicePolicyManager mDPM;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  //  setContentView(R.layout.main);

    mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
    //  mDPM.lockNow();

    ComponentName mAdminName = new ComponentName(Myclass.this,LockActivity.class);

        if(!mDPM.isAdminActive(mAdminName))
        {
            Intent intent = new       
Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,    
mAdminName);
            //mDPM.lockNow();
        }
        else
        {
            mDPM.lockNow();
        }   



         }
}

}

我还添加了My_admin.xml文件

I also added the My_admin.xml file

<?xml version="1.0" encoding="utf-8"?>
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
    <limit-password />
    <watch-login />
    <reset-password />
    <force-lock />
    <wipe-data />
    <expire-password />
    <encrypted-storage />
    <disable-camera />
</uses-policies>
</device-admin>

我找不到有什么不顺心这里。好心帮我在这里指出我的错误。在此先感谢。

I can't find what is goes wrong here. kindly help me to point out my mistake here. thanks in advance.

推荐答案

您可以添加此code到你的Activity类,这对我来说工作得很好

you can add this code into your Activity class, it's works fine for me

    if(!mDPM.isAdminActive(mAdminName))
        {
             intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);
              intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"is locked");
              intent.putExtra("force-locked", DeviceAdminInfo.USES_POLICY_FORCE_LOCK);

            startActivityForResult(intent, 1);
            System.out.println("The Device Could not lock because device admin not enabled");
            //mDPM.lockNow();
        }
        else
        {
            System.out.println("The Device  device admin enabled");
             intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);
              intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,"onEnabled");
            mDPM.lockNow();
            mDPM.setMaximumTimeToLock(mAdminName, 0);
              intent.putExtra("force-locked", DeviceAdminInfo.USES_POLICY_FORCE_LOCK);

                startActivityForResult(intent, 1);

        }   

希望这将是对你有所帮助。

Hope this would be helpful for you.