栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我如何以编程方式锁定Android手机

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我如何以编程方式锁定Android手机

您必须将您的应用设为管理员,在这里阅读一些内容

创建一个新的空项目,并创建一个名为

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
但是当您使用该窗口时,窗口可能不会弹出,因此请尝试从以下子类中打开它:仅活动

此外,除非尚未将其注销为管理员,否则您无法卸载您的应用程序



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419242.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号