锁定安卓手机

2024-04-16

当用户按下按钮时,我试图以编程方式锁定设备。我知道我需要使用deviceAdminReciever我已经这样做了,但是每当我运行它时我的应用程序就会崩溃

以下是我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.MyApp"
android:versionCode="1"
android:versionName="1.0" >

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

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <receiver
        android:name=".MainActivity"
        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.DEVICE_ADMIN_ENABLED" />
        </intent-filter>
    </receiver>
</application>

<uses-feature android:name="android.hardware.camera" />

</manifest>

以下是我的java代码:

public class MainActivity extends DeviceAdminReceiver {

public static class MyActivity extends Activity {

    protected static final int ACTIVATION_REQUEST = 1;
    private ImageButton btn;

    private DevicePolicyManager mDPM;
    private ComponentName mDeviceAdminSample;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        mDeviceAdminSample = new ComponentName(Potter.this,
                MainActivity.class);
        setContentView(R.layout.activity_main);



        btn = (ImageButton) findViewById(R.id.btn);

        btn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                Intent intent = new Intent(
                    DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            mDeviceAdminSample = new ComponentName(this, MainActivity.class);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
                    mDeviceAdminSample);
            startActivityForResult(intent, ACTIVATION_REQUEST);
            mDPM.lockNow();

            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode,
            Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch (requestCode) {
         case ACTIVATION_REQUEST:
                if (resultCode == Activity.RESULT_OK) {
                    Log.i("DeviceAdminSample", "Administration enabled!");
                } else {
                    Log.i("DeviceAdminSample", "Administration enable FAILED!");
                }
                return;


        }
    }


}
}

但是,当我运行该应用程序时,它崩溃了。我该如何纠正这个问题?


这是我的有效代码:

显现:

<application
    android:icon="@drawable/ic_power_settings_new_black_48dp"
    android:label="Screen Off"
    android:theme="@android:style/Theme.NoDisplay">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver android:name="android.app.admin.DeviceAdminReceiver">
        <meta-data android:name="android.app.device_admin"
            android:resource="@xml/device_admin" />
        <intent-filter>
            <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
        </intent-filter>
    </receiver>
</application>

MainActivity.java:

package com.example.anhkhoachu.screenoff;

import android.app.Activity;
import android.app.Application;
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.widget.Toast;


public class MainActivity extends Activity {
DevicePolicyManager dpm;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
    try {
        dpm.lockNow();
        finish();
    } catch (SecurityException e) {
        Intent it = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        it.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, new ComponentName(this, DeviceAdminReceiver.class));
        startActivityForResult(it, 0);
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        dpm.lockNow();
    } else {
        Toast.makeText(this, "Device administrator must be activated to lock the screen", Toast.LENGTH_LONG).show();
    }
    finish();
}}

设备管理.xml:

<device-admin> <uses-policies> <force-lock /> </uses-policies> </device-admin>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

锁定安卓手机 的相关文章

  • Android:如何在多语言资源中重用字符串

    自从我的第一个 Android 项目以来 这个问题一直困扰着我 考虑以 en 作为默认值的多语言字符串资源 res values strings xml lt The default language en res values de st
  • Android 中读取未提交的事务

    我正在进行大量数据库操作 这会向我的数据库添加大约 10 000 条记录 由于这可能需要很长时间 因此最好使用事务 db startTransaction do write operations db setTransactionSucce
  • 删除 Android 中切换按钮的填充

    我正在 android 中创建一个简单的切换按钮并将背景设置为可绘制对象
  • 未找到 Google 地图 api v2 类

    我正在使用谷歌地图 api v2 一切正常 今天早上我更新了 sdk 现在地图无法工作 尝试了很多事情 例如再次导入 lib 项目 但似乎没有任何效果 请帮忙 这是 logcat 输出 05 16 08 53 34 327 E dalvik
  • 从非风味应用程序引用的 Android 多风味库 - AAPT:找不到资源

    我有包含字符串资源的库
  • 如何在状态更改时更改 Android 切换按钮的文本颜色?

    我的切换按钮对于每个状态都有不同的颜色背景 红色和白色 现在我需要在激活时更改切换按钮文本 红色 白色 的颜色 使用 xml 我无法让它工作 也许有人知道我做错了什么 我的布局 xml 中的按钮
  • 删除SD卡上的文件夹

    I tried File delete 但它不起作用 如何删除SD卡上的目录 我正在开发 Android 2 1 在删除目录本身之前 您必须将所有目录清空 请参阅here http www rgagnon com javadetails j
  • 无法从视图转换为按钮

    我在这里遇到非常令人沮丧的问题 我有这个代码 Button b findViewById android R id button1 我收到了这个错误 类型不匹配 无法将表单视图转换为按钮 但是按钮1is一个按钮 在我的 XML 布局文档中
  • Android 上的嵌套滚动

    我们的活动中有一个主要的水平滚动视图 以及嵌套在其中的几个垂直滚动视图 这个想法是水平滚动 直到找到所需的垂直列表 然后上下滚动 理想情况下 一旦开始垂直滚动 我希望垂直滚动具有 锁定 现在会发生什么 如果您非常小心 您可以垂直滚动 但如果
  • Android - 如何设置所有屏幕的背景颜色?

    维护字体和颜色样式的最佳实践是什么 我制作了一个 color xml 文件 用于更改按钮等单独元素的颜色 但我不确定 Android 希望开发人员如何组织他们的样式 例如 我希望所有屏幕都具有相同的背景颜色 我怎么做 我需要为每个 Acti
  • Android 上 WebRTC 的自定义视频源

    Overview 我想使用自定义视频源通过 WebRTC Android 实现来直播视频 如果我理解正确的话 现有的实现仅支持 Android 手机上的前置和后置摄像头 以下类与此场景相关 Camera1Enumerator java ht
  • Android 缩放和密度问题

    Update 一些研究表明 华硕 Transformer TF700T 高端 的像素密度应约为 224 因此 android 报告的 159 值要么是错误的 要么已被某种方式修改 system 中的 lcd 密度键 build prop 由
  • GpsStatusListener:尽管状态为 GpsStatus.GPS_EVENT_FIRST_FIX,但修复中未使用卫星

    我向我的位置管理器添加了一个 GPS 状态侦听器 以便查看何时获得第一个修复 当我收到 GPS EVENT FIRST FIX 时 我会循环遍历所有卫星 但为什么修复中没有使用它们 usedInFix 我的日志对所有卫星都显示 错误 fin
  • 抽屉式导航不显示片段

    我创建了一个新的 Android Studio 项目 我的 MainActivity 是导航抽屉活动 所以 我无法显示碎片 我在互联网上和这里读过很多帖子 解释 我打开导航抽屉 选择菜单 播客 PodcastsFragment 应该显示 但
  • Android图层列表不显示比例可绘制项目?

    使用下面的图层列表 我的比例绘制从未显示 这是为什么 菜单 对话框 标题 xml
  • Android:了解 OnDrawFrame、FPS 和 VSync (OpenGL ES 2.0)

    一段时间以来 我在 Android 游戏中遇到了运动精灵间歇性 卡顿 的情况 这是一个非常简单的 2D OpenGL ES 2 0 游戏 这是一个持续存在的问题 我已经多次重新访问过 在我的游戏循环中 我有 2 个 计时器 一个用于记录前一
  • 应用程序启动器图标显示在活动的操作栏上

    在我的操作栏上显示应用程序图标 我不希望它出现在操作栏上 我修改了 androidmanifest xml 并删除了android icon从活动元素中 即使图标正在显示
  • 尝试在后台使用 AsyncTask 解析 JSON 时强制关闭

    我是 Android 开发新手 正在研究 json 数据 我设法让解析工作 我想显示一个 ProgressDialog 我读到我需要使用 AsyncTask 但由于某种原因 一旦我将相同的工作代码放入 doInBackground 中 即使
  • 如何在运行时检查授予权限?

    In Android M 预览版 用户可以选择特定的应用程序并检索特定的权限 所以我问如何在运行时检查授予权限 您可以使用以下复制的代码https android googlesource com platform frameworks b
  • Flutter 中 Android RecyclerView.SCROLL STATE IDLE 的等价物是什么

    Android 给出的滚动状态如下RecyclerView SCROLL STATE IDLE它告诉用户何时停止滚动 我找不到任何选择在颤动中Pageview or ListView滚动监听器 我的问题 我需要检测 PageView 中的向

随机推荐

  • 如何:使用 MvcContrib.Pagination 而不使用 MvcContrib.Grid 视图

    这最初是一个问题 但随着我做了一些实验 变成了一个解决方案 所以我想我会和大家分享这个 我的问题是 如何在不使用 MvcContrib Grid View 的情况下使用 MvcContrib Pagination 我的回答如下 我正在构建一
  • GIT hook -> Python -> Bash:如何读取用户输入?

    我正在 Python 3 5 中做一个 GIT 钩子 python 脚本调用 Bash 脚本 该脚本使用以下命令读取用户的输入read命令 bash 脚本本身可以工作 在直接调用 python 脚本时也可以 但是当 GIT 运行用 Pyth
  • 排除elasticsearch结果数据中的_id和_index字段

    如果简单地点击 api 每个文档中有 5 个字段 但我只想要这两个字段 user id 和 loc code 所以我在字段列表中提到 但它仍然返回一些不必要的数据 如 shards hits time out等 使用下面的查询在 chrom
  • 根据 TypeScript 中的参数值更改返回类型

    我有以下功能 function doThing shouldReturnObject boolean string object return shouldReturnObject hello world hello world 我希望返回
  • 在 SBT 中显示调试模式的时间戳?

    我的sbt更新很慢 我想看看详细情况 所以我有 sbt debug update gt sbtupdate log 问题是日志没有每一行的时间戳 如何启用它 据我所知 仅使用 SBT 选项是不可能的 然而这question https st
  • 在 Mac OS Catalina (10.15.7) 上安装 greenlet

    我想在我的 Mac OS Catalina 10 15 7 上运行基于 Python 的项目的本地副本 项目使用诗歌作为 Python 依赖项管理工具 在安装 python 依赖项时 它会在遵守 Greenlet 包时崩溃 我听说此类问题可
  • django admin list_filter“或”条件

    抱歉 如果这个问题之前已经被回答过 但我做了很多谷歌搜索但没有成功 我知道如何创建自定义list filter管理视图中的 s 例如子类化SimpleFilter 我真正想要的是一种方法 在管理列表视图上 检查 将它们组合在 OR 公式中的
  • 关闭 popoverview 后恢复第一响应者

    我在主视图控制器上有一个文本视图 我在视图控制器的导航栏上有一个栏按钮项目 当应用程序启动时 我执行以下操作 点击文本视图开始编辑并显示键盘 点击栏按钮以显示弹出视图 在不关闭弹出窗口视图的情况下 我关闭了键盘 通过点击屏幕上的任何其他视图
  • 更改 Windows.Ribbon 背景颜色

    我正在与System Windows Ribbon在我的项目中 我还使用其他一些库 例如AvalonDocking 我想做的是在应用程序中创建自己的主题 以便用户可以选择喜欢的主题 问题是我不明白RibbonTab更改为正确的颜色 当我更改
  • libdmtx 死了吗,建议替换吗?

    我一直在使用libdmtx http www libdmtx org在一个项目中并希望更新到较新的版本 但该项目似乎已经一年多没有更新了 最后一次更新 版本是 2011 年 6 月 Git 存储库 http libdmtx git sour
  • Safari 中的文本阴影被切断/不渲染超出元素边框

    正如标题所说 我有一个文本阴影 其中包含以下内容 body background white h1 color black text shadow 100px 100px 10px black In the Safari browser t
  • Selenium Python:没有这样的文件或目录:“/usr/local/bin/chromedriver”,但它存在并添加到路径中

    尝试在 Docker Apline Linux 上运行 selenium python 并收到 消息 chromedriver 可执行文件需要位于 PATH 中 错误 因为它认为该文件不存在 但在其他答案中尝试了我能做的一切 但它仍然无法启
  • 在 forEach 中调用类函数:Javascript 如何处理“this”关键字

    我是 Javascript 新手 只是想确保我理解它如何处理this关键字 因为 嗯 看起来很混乱 我已经在 StackOverflow 上查看了类似的问题 并想确保我没有继续错误的想法 所以我定义一个像这样的类 并且想要处理构造函数中收到
  • 在 Google App Engine 中接收邮件

    我正在阅读有关的教程接收邮件 http code google com appengine docs python mail receivingmail html 我按照指示更新了 app yaml 文件 application hello
  • 在单个 Java 项目中运行测试突然开始无提示地失败

    我有一个项目 我已经工作了几周 没有出现任何问题 自从昨天早上开始工作以来 我根本没有进行任何更改 但是从昨天下午开始 在该项目中运行任何测试都会默默失败 I see or rather don t see the same thing r
  • 使用ajax请求显示进度条进度

    我想在 ajax 请求触发和完成时使用 jquery ui 进度条显示进度 问题是我不知道如何根据ajax请求的进度设置进度条的值 下面是一段代码 function ajaxnews newstabs a click function e
  • 在 AngularJS 的 ng-bind 中使用过滤器后添加更多文本

    所以我想在 ng bind 指令中通过过滤器放置一个变量 ng bind input filter 但我想插入更多文字 ng bind input filter more 但这不起作用 有没有办法在 ng bind 中添加更多文本 就像您简
  • CMake子目录依赖

    我对 CMake 很陌生 事实上 我正在通过 Kdevelop4 widh C 进行尝试 我习惯为我创建的每个命名空间创建子目录 即使所有源代码都必须编译并链接到单个可执行文件中 好吧 当我在 kdevelop 下创建一个目录时 它会使用
  • Chart.js - 如何禁用悬停时的所有内容

    如何设置代码使图表上没有悬停效果 悬停选项 悬停 链接等 我正在使用 Chart js 下面是我的代码 我在其中设置饼图 Html div style width 90 div
  • 锁定安卓手机

    当用户按下按钮时 我试图以编程方式锁定设备 我知道我需要使用deviceAdminReciever我已经这样做了 但是每当我运行它时我的应用程序就会崩溃 以下是我的清单