Android Lollipop 成为设备管理员不起作用

2024-01-08

我正在跟进本指南 http://developer.android.com/guide/topics/admin/device-admin.html关于如何让我的应用程序请求成为设备管理员。
这适用于任何 4.x android 版本的任何手机,但不适用于 Lollipop(我已经在 Nexus 5 和 Nexus 7 上尝试过)。

logcat鞋子出现如下错误:

 *11-02 07:37:09.649: W/DeviceAdminAdd(10020): Cannot start ADD_DEVICE_ADMIN as a new task*  

还有其他人在 Lollipop 中遇到过这个问题吗?可能是什么原因?
我已经仔细阅读了指南的所有部分,并确保我的 XML、清单、接收器等都符合它们应有的样子(同样,它确实适用于我尝试过的任何其他版本的操作系统或手机)。

如果重要的话,出于兼容性原因,我将使用目标 API=17 和最小 API=14 来编译我的应用程序。


添加清单文件:

<?xml version='1.0' encoding='utf-8'?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my.package"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="17" />

     <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
    <uses-permission android:name="com.mycompany.permission.NFProvider_WRITE" />
    <uses-permission android:name="com.mycompany.permission.NFProvider_READ" />
    <uses-permission android:name="android.permission.READ_LOGS" />

    <application
        android:name="com.mycompany.myapp.Application"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <receiver
            android:name="com.mycompany.myapp.NFAdminReceiver"
            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>

        <activity
            android:name="com.mycompany.myapp.ConnectMainActivity"
            android:label="@string/title_activity_connect_main"
            android:process="com.mycompany.ui"
            android:launchMode="singleInstance"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


        <service
            android:name="com.mycompany.myapp.MainService"
            android:enabled="true" />

        <meta-data android:name="applicationVersion" android:value="1.2.0.213" />


    </application>
</manifest>

创建意图的代码:

ComponentName mComponentName = new ComponentName(activity, NFAdminReceiver.class); 
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);     
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, ADMIN_REQUEST_TITLE);
activity.startActivityForResult(intent, ADMIN_INTENT); 

变量 Activity 是 ConnectMainActivity 的实例


似乎是 singleInstance launchMode 选项导致了问题,我仍然有兴趣知道为什么它会导致 Lollipop 上的问题而不是其他版本上的问题。

目前,将 launchMode 设置为 singleTask 可以解决该问题,并且似乎仍然适合应用程序流程的设计。

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

Android Lollipop 成为设备管理员不起作用 的相关文章

随机推荐

  • Softmax 交叉熵损失爆炸

    我正在创建一个用于逐像素分类的深度卷积神经网络 我正在使用 adam 优化器 softmax 和交叉熵 Github 存储库 https github com dhasl002 Research DeepLearning I asked a
  • 如何使用 rspec 测试具有嵌套路由的控制器

    我使用 InherritedResource 创建控制器 class AppsController lt InheritedResources Base belongs to company Devise before filter log
  • 如何使用RxJava返回值?

    让我们考虑一下这种情况 我们有一些类 它有一个返回某个值的方法 public class Foo Observer
  • Netbeans 7.0 的 UML 插件?

    我如何安装 添加 UML 插件到 Netbeans 7 0 我可以找到多种安装插件的方法 但仅限于 6 9 的早期版本 http forums netbeans org topic28035 html http forums netbean
  • OS X Mavericks 上有 PostgreSQL 吗?

    我知道 OS X Mountain Lion 上安装了一个版本的 PostgreSQL 如果你想使用这个数据库引擎 你必须安装一个新版本并进行一些更改 http nextmarvel net blog 2011 09 brew instal
  • 对动态添加的文本使用内联 CKEditor

    我正在构建一个网络应用程序 它使用 javascript 动态地将元素添加到页面 然后可以使用进行编辑contentEditable true and CKEditor 目前 如果我向页面添加一个元素contentEditable true
  • 不使用 jQuery 添加到 DOM

    这应该很简单 但事实并非如此 document getElementsByTagName body 0 document createTextNode document createElement div some HTML div 它创建
  • 类名宏[重复]

    这个问题在这里已经有答案了 可能的重复 CLASSC 中的宏 https stackoverflow com questions 1666802 class macro in c 你好 有没有什么方法可以用宏来获取类的名称 比如 功能 对于
  • 无法覆盖 __call__ 的实现

    以此为例 class Foo object def init self msg self msg msg def call self return self msg foo Foo hello print foo Prints hello
  • 使用 Telnet 或 SSH 与 Perl 从本地计算机在远程计算机上运行 perl 脚本

    我想使用 telnet 或 ssh 在远程计算机上运行 Perl 脚本 该脚本位于我的本地主机上 如何执行此操作 有人可以帮我解决这个问题吗 如果由于某种原因您不想将脚本复制到远程主机然后运行它 您可以通过 stdin 将脚本发送到 Per
  • .NET 3.5 中的 FormsAuthentication.Timeout.TotalMinutes

    我刚刚使用 FormsAuthentication 我想要 Web 配置中表单身份验证标记的超时属性值 在 4 0 中 我们可以通过 FormsAuthentication Timeout TotalMinutes 获取此信息 参考 For
  • socket.io + node.js 的内存泄漏

    我的 Node js 应用程序似乎存在内存泄漏 我很快就构建了它 而且我的 JavaScript 不太强大 所以这可能很容易 我已经对它做了一些堆转储 它是字符串object 内存泄漏 速度约为每 5 分钟 1MB 我扩展了String 它
  • PHP MySQL 计数查询结果是字符串,而不是整数

    我有以下 MySQL 查询和 PHP 代码来格式化Count结果为单个数组 equalDimensions query SELECT allEqual AS COL1 COUNT AS imgCount FROM SELECT imgHei
  • Go 和 PHP 中的 SHA256 给出不同的结果

    我正在尝试通过 HTTP 将 SHA256 哈希字符串发送到服务器 我想通过执行 SHA256 哈希并验证两个匹配来进行身份验证 出于测试目的 我使用相同的字符串 但是我的结果不匹配 这可能是我的 base64 encode 调用的默认编码
  • 为什么我在这个 devise_group 调用中收到 NoMethodError 错误?

    我正在使用 devise 3 5 2 ruby 2 2 2 rails 4 2 3 class ApplicationController lt ActionController Base Prevent CSRF attacks by r
  • Application.Exit() 不起作用

    static void Main Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application Exit App
  • PyMongo 与 Django 的 MongoEngine

    对于我的一个项目 我更喜欢使用Django Mongodb 我为什么要使用蒙戈引擎 但不仅仅是PyMongo 有什么优点 使用 PyMongo 查询给出的结果是已准备好的对象 不是吗 那么 MongoEngine 的目的是什么 这是一个老问
  • 在 Terraform 中使用“execute”插值声明变量

    我想将一个变量的子字符串声明给另一个变量 我测试了使用 terraform 控制台获取子字符串 gt echo element split 10 250 3 0 24 2 terraform console gt 3 我的子网是 10 25
  • 更改树莓派蓝牙设备名称?

    我正在尝试将树莓派的蓝牙名称更改为其他名称 IP 地址 以便当我扫描并配对我的 Android 设备时 它将将此 IP 视为设备名称 它工作过一次 但随后又返回显示为 raspberrypi 0 我已经尝试了 hciconfig set n
  • Android Lollipop 成为设备管理员不起作用

    我正在跟进本指南 http developer android com guide topics admin device admin html关于如何让我的应用程序请求成为设备管理员 这适用于任何 4 x android 版本的任何手机