您必须将您的应用设为管理员,在这里阅读一些内容
创建一个新的空项目,并创建一个名为
MyAdminReceiver这样的扩展
DeviceAdminReceiver类
import android.app.admin.DeviceAdminReceiver;public class MyAdminReceiver extends DeviceAdminReceiver{}创建一个名为xml的新文件夹,并为您的管理员权限创建一个.xml文件,
admin.xml并添加策略,以防其锁定屏幕
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" > <uses-policies> <force-lock /> </uses-policies></device-admin>
在清单中的“应用程序”标签下添加接收方
<receiver android:name="MyAdminReceiver" android:permission="android.permission.BIND_DEVICE_ADMIN"> <meta-data android:name="android.app.device_admin" android:resource="@xml/admin"/> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"/> </intent-filter></receiver>
并在您的
MainActivity.java添加代码中这样
import android.app.Activity;import android.app.admin.DevicePolicyManager;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity implements onClickListener { private static final int ADMIN_INTENT = 15; private static final String description = "Some Description about Your Admin"; private DevicePolicyManager mDevicePolicyManager; private ComponentName mComponentName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDevicePolicyManager = (DevicePolicyManager)getSystemService( Context.DEVICE_POLICY_SERVICE); mComponentName = new ComponentName(this, MyAdminReceiver.class); Button btnEnableAdmin = (Button) findViewById(R.id.btnEnableAdmin); Button btnDisableAdmin = (Button) findViewById(R.id.btnDisableAdmin); Button btnLock = (Button) findViewById(R.id.btnLock); btnEnableAdmin.setonClickListener(this); btnDisableAdmin.setonClickListener(this); btnLock.setonClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnEnableAdmin: Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN); intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponentName); intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,description); startActivityForResult(intent, ADMIN_INTENT); break; case R.id.btnDisableAdmin: mDevicePolicyManager.removeActiveAdmin(mComponentName); Toast.makeText(getApplicationContext(), "Admin registration removed", Toast.LENGTH_SHORT).show(); break; case R.id.btnLock: boolean isAdmin = mDevicePolicyManager.isAdminActive(mComponentName); if (isAdmin) { mDevicePolicyManager.lockNow(); }else{ Toast.makeText(getApplicationContext(), "Not Registered as admin", Toast.LENGTH_SHORT).show(); } break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == ADMIN_INTENT) { if (resultCode == RESULT_OK) { Toast.makeText(getApplicationContext(), "Registered As Admin", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(getApplicationContext(), "Failed to register as Admin", Toast.LENGTH_SHORT).show(); } } }}注意:
如果您尝试从Activity子类中调用管理设备的Intent,则可能会出现使用错误,
Intent.FLAG_ACTIVITY_NEW_TASK但是当您使用该窗口时,窗口可能不会弹出,因此请尝试从以下子类中打开它:仅活动
此外,除非尚未将其注销为管理员,否则您无法卸载您的应用程序



