Xamarin MonoAndroid 设备管理

2023-12-12

我正在使用 Visual Studio 2017 来开发 Android 单视图应用程序。该应用程序应该是一个信息亭应用程序。我的目标是 API 21,在 Visual Studio(AVD 设备)提供的模拟器上。

我遇到的问题是我似乎无法制作有效的 DeviceAdminReceiver。我使用此链接作为我的指南:安卓信息亭模式该示例有效,但我的代码无效。该示例适用于 java。

这就是我的 DeviceAdminReceiver.cs 的方式:

[BroadcastReceiver(Permission = "android.permission.BIND_DEVICE_ADMIN")]
[MetaData("android.app.device_admin", Resource = "@xml/device_admin")]
[IntentFilter(new[] { "android.app.action.DEVICE_ADMIN_ENABLED", Intent.ActionMain})]
public class AdminReceiver : DeviceAdminReceiver
{
    public override void OnEnabled(Context context, Intent intent)
    {
        base.OnEnabled(context, intent);
        Toast.MakeText(context, Resource.String.AdminEnabled, ToastLength.Short).Show();
        Common.BecomeHomeActivity(context);
    }

    public override void OnLockTaskModeEntering(Context context, Intent intent, string pkg)
    {
        Common.ShowToast(context, "[Kiosk Mode enabled]");
    }

    public override void OnLockTaskModeExiting(Context context, Intent intent)
    {
        Common.ShowToast(context, "[Kiosk Mode disabled]");
    }

    public override void OnDisabled(Context context, Intent intent)
    {
        Toast.MakeText(context, Resource.String.AdminDisabled, ToastLength.Short).Show();
    }
}

这是我的 MainActivity.cs 中的代码:

 protected override void OnCreate(Bundle bundle)
    {
        try
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            _deviceAdmin = new ComponentName(this, Java.Lang.Class.FromType(typeof(AdminReceiver)));
            _devPolicyManager = (DevicePolicyManager)GetSystemService(Context.DevicePolicyService);

            if (!_devPolicyManager.IsAdminActive(_deviceAdmin))
                Common.ShowToast(this, "Admin is not active");

            if (_devPolicyManager.IsDeviceOwnerApp(PackageName))
                _devPolicyManager.SetLockTaskPackages(_deviceAdmin, new string[] { PackageName });
            else
                Common.ShowToast(this, "App is not Device Owner");
            //}
        }
        catch (Exception ex)
        {

        }
    }

我遇到的错误是,当我尝试将应用程序视为设备所有者时,出现错误Error: Unknown admin: ComponentInfo{atp.egg.app/atp.egg.app.AdminReceiver。我猜这个错误与 AndroidManifest.xml 中的某些内容有关。我认为清单是根据类的属性自动生成的。我错了吗?

更新:这是我正在使用的行命令:adb -s model:Android_SDK_built_for_x86 shell dpm set-device-owner atp.egg.app/.AdminReceiver

这是我的 AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="atp.egg.app" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:label="KioskApp"></application></manifest>

任何建议将不胜感激。即使是在 Xamarin.Android 中完成的具有正常功能的 DeviceAdminReceiver 的任何示例也是可以的。


我找到了原因,并将其发布在这里,以防其他人遇到类似问题。

问题是 Visual Studio 正在生成一个 AndroidManifest,其中包含 Activity 和 Receiver 的 md5 命名空间(android:name="md5e47a6bbf1a64ae14eb7c553dec4a7b66.AdminReceiver".

这不允许 Android 操作系统工具正确地与我的应用程序配合使用。为了解决这个问题,我必须将“Name”属性添加到类中([BroadcastReceiver(Permission = "android.permission.BIND_DEVICE_ADMIN",Name ="atp.egg.app.AdminReceiver")]) .

完成此操作后,AndroidManifest 为我的类提供了正确的名称,并且一切正常。

祝你今天过得愉快。

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

Xamarin MonoAndroid 设备管理 的相关文章

  • Xamarin.Android JmDNS 绑定问题

    我开始研究 Xamarin Android 的 JmDNS 绑定 我设法构建了绑定 但无法从代码中引用它 https github com ytn3rd monodroid bindings tree master JmDNS https
  • 没有 Xamarin.Forms 的 Xamarin BeginInvokeOnMainThread

    抱歉 我确信这将是一个非常愚蠢的问题 我在 Xamarin 应用程序中使用 Android UI 而不是 Xamarin Forms 作为表示层 但我想使用 Activity RunOnUIThread 来自 Android 所有 Xama
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • 无法再在模拟器或设备上调试

    直到今天早上 我才能在物理设备和模拟器上调试我的 Xamarin iOS 应用程序 我认为这与最近的iOS更新有关 当我尝试部署到我的物理设备 iPad 时 我现在收到以下消息 错误 HE0003 无法加载框架 IBFoundation 路
  • 录制视频/音频时播放系统声音

    当我开始录制视频时 我试图按照苹果的要求播放 嘟嘟 声 我通过 SO 和其他来源发现 当您有音频输入而没有进行某些配置时 您无法播放声音 这是我尝试的配置方法 private void SetupAudio beepSound AssetB
  • 使用 xamarin 和 c# 更改 android 上的cultureinfo

    我调用自定义方法来动态地将当前文化信息切换为法语 fr 像这样 但在调用该方法后 我的 Android 应用程序仍然使用默认区域性 en 但在调试模式下 区域性似乎没问题 我的文件夹没问题 我两者都有 并且字符串值已配置 文件夹 resou
  • 特定铃声 firebase 通知 xamarin.android

    How i can force the push notification to run ringtone instead of default notification sound is there any way to ovveride
  • 为什么 Visual Studio 无法连接到默认检测到的 Mac Agent 的 mac Agent?

    今天 我在设置新 Mac 并尝试连接 Visual Studio 2015 后注意到 Visual Studio 无法连接到检测 Xamarin 的 Mac 构建代理时显示的默认构建代理 这就是我所做的 将新的 Mac Mini 连接到网络
  • Xamarin 构建错误:错误 APT0000:在 ...中,无法找到属性

    我收到了另一位开发商的项目 我设置了我的机器 带有所需组件的 VS 2017 已配置 Android SDK Manager已安装相应版本 项目配置为编译Android 7 1 Nougat 开始构建时出现一个错误 1 gt ERROR e
  • xaml.cs 文件上的 InitializeComponent() 出现错误

    有时我会收到一个红色错误 内容如下 InitializeComponent 在当前上下文中不存在 以及我的其他变量 xaml受约束的x Name The x ClassXaml 文件中的名称空间和类名确实对应于我的xaml cs file
  • Android 上的 Xamarin.Forms“应用程序已停止工作”

    所以我刚才遇到了这个错误 这导致我的 Android 应用程序无法在设备上运行 每当我调试 Android 应用程序时 它都会因某种原因崩溃 作为 Xamarin 的新用户 我一无所知 这是我收到的错误 art Late enabling
  • Xamarin Apple 帐户错误:加载证书时出错:对象引用未设置到对象的实例

    我正在尝试解决我有这个问题 https stackoverflow com questions 69286865 a valid provisioning profile for this executable was not found
  • Xamarin.Forms 绘图[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在为客户构建一个 Xamarin Forms 项目 我们需要一个图形库它将处理实时流式传输的数据连
  • 如何使用 xamarin 表单提示用户进行地理定位

    我正在 Xamarin Forms 应用程序中开发一个应用程序 需要请求地理位置权限 如果获得许可 它需要从设备获取地理位置数据 然后将地理位置坐标放入 Forecast io URL 我正在使用 James 的 Geolocator 插件
  • MvvmCross 在 Xamarin Studio 中工作吗?

    我花了一段时间得到一个直接的答案 我做了很多搜索和阅读 并尝试了很多东西 有时听起来是可能的 有时听起来只有通过进行链接和其他操作才可能实现 这是我试图避免的事情 我是 PCL 的忠实粉丝 我使用 Visual Studio 2012 Xa
  • Xamarin.forms 长时间运行的后台工作

    我是 Xamarin 平台的新手 我正在使用 Xamarin forms 为所有三个主要平台 WP iOS Android 开发应用程序 如何在后台与我的服务器同步数据 gt 我需要类似于 Android Service 的东西 即使用户转
  • 汉堡菜单棱镜xamarin形式?

    我正在尝试在 Xamarin Forms 中使用 Prism 创建一个应用程序 Xamarin 表单版本 2 3 3 175 棱镜版本 6 2 0 汉堡菜单可以在 Android 中使用 但是当我在 UWP 上运行它时 它不会显示图标 而且
  • 如何在 Xamarin Forms 中获取视频的长度

    如何使用 Xamarin Forms 获取视频的长度 我已使用以下链接从视频中获取缩略图 但我需要能够获取视频长度 https forums xamarin com discussion 119450 create thumbnail fr
  • 如何在ListView的TextCell中换行文本?

    如何在ListView的TextCell中换行文本 我尝试设置HasUnevenRows to True但这没有帮助 您不能使用 Xamarin 的 开箱即用 TextCell 功能 但是 您应该能够创建一个 ViewCell 并利用换行模
  • 如何从模拟器启动中删除“-no-boot-anim”标志?

    我正在使用 VS 15 4 预览版 2 来测试 Android 8 0 的一些功能 我正在尝试将我的应用程序启动 调试 到 AVD 模拟器中 但打开后模拟器窗口中出现空白黑屏 我注意到从 VS 输出打开模拟器的命令是 2 gt Starti

随机推荐

  • ContextMenu 并以编程方式选择一个项目

    似乎没有用于以编程方式 选择 ContextMenu 项的 API 我所说的选择相当于点击向上和向下键 或将鼠标悬停在某个项目上 当显示上下文菜单时 我实际上只需要选择第一项 我试图在显示菜单时触发向下键事件 但什么也没发生 也许我错误地构
  • 使sql视图可编辑

    我已经制作了这个 sql 视图来组合一些表并且它可以工作 但它不可编辑 我无法插入 删除 编辑 数据directly在其中 但前提是我在初始表中这样做 那么有什么方法可以直接在视图中执行相同的操作 编辑数据 Create view tabl
  • 如何使用jupyter_client获取执行结果?

    我想使用 jupyter client 执行一些 python 代码并获得结果 这是我的示例代码 但我无法得到输出hello world 有人可以帮助我吗 谢谢 import jupyter client kernel manager ke
  • Jackson 和 java.sql.Time 序列化/反序列化

    考虑这个属性Hibernate 管理实体 JsonFormat pattern HH mm Column name start time private java sql Time startTime 我发布了一个JSON 对象为 Requ
  • 来自已安装应用程序的 OpenID 身份验证

    我目前正在计划一个新的网络项目 客户端将使用常规 Web 浏览器进行连接 如果是常规支持 Java 的手机 则使用 j2me 客户端进行连接 我真的很想利用 OpenID 身份验证 对于常规网络浏览器来说 事情非常简单 但是 我真的不确定已
  • gcc-4.2 失败,退出状态为 1

    我一直在寻找这个问题的答案 但找不到 所以就在这里 我正在尝试安装统一转换器使用 setup py 文件将其导入 MacOS X Lion Python 2 7 2 python setup py install 然后我得到以下错误代码 r
  • ES6类中的构造函数和原型中的构造函数之间的区别?

    ES6 类和函数原型都有一个contructor 但我想知道它们是一样的吗 让我给出更多解释 因此 我创建了一个 Cat 函数 例如 const Cat function name this name name The Cat has th
  • WPF 数据变化动画

    我正在开发一个列出一些对象的 WPF 网格 如果对象的数据发生变化 我想启动动画 下面列出了 XAML 代码的摘录
  • 在生产环境中使用 PGO(配置文件引导优化)的风险

    我有一个系统 Linux 和 C 执行密集的信号 图像处理操作 我想使用 PGO 来提高我们应用程序的性能 使用 PGO 时我应该注意哪些风险 潜在问题 单元测试 E2E测试是否足以验证PGO没有破坏任何东西 微软有一个系统 它根据使用统计
  • 永久添加到 MAC 上的 DYLD_LIBRARY_PATH 会导致 X11 错误

    我正在使用 Python 2 7 并尝试导入 graph tool 并且我的 libboost thread mt dylib 似乎位于 opt local lib 而不是 usr local lib 中 如果我启动 X11 终端并输入 e
  • 在运行时修改 Spring Security 配置

    我正在使用最新的 Spring Boot Spring Boot Starter Security 来构建简单的代理应用程序 目标是使用单一路由 方法启动应用程序 RequestMapping value api register meth
  • 在文本框控件内添加标签

    我想创建一个继承自 TextBox 的控件 其中有一个标签 其中 粘贴 到文本框的右侧 并且该文本不可由用户编辑 而是由属性设置 如何才能做到这一点 我意识到可能有很多原因导致这种用户体验是一个坏主意 但我必须这样做 改编自汉斯 帕桑特的w
  • 使用“月-年”日期值创建带有时间线的 D3.js 散点图

    我有一个列出日期的数据集 如下所示 var dataset 1 2006 20 3 2009 90 11 2004 50 5 2012 33 4 2008 95 4 2004 12 7 2000 44 5 2006 67 6 2007 21
  • POSIX 相当于 boost::thread::hardware_concurrency [重复]

    这个问题在这里已经有答案了 可能的重复 以编程方式查找机器上的核心数 用于确定系统在不超额订阅的情况下可以运行的最大线程数的 POSIX 或 x86 x86 64 特定系统调用是什么 谢谢 它使用 C 兼容的结构 那么为什么不直接使用实际的
  • Magento 模块在本地主机上运行良好,但在实时服务器上运行不佳

    我这里有一个奇怪的案例 I m making a simple magento module right now Some kind of script injection module similar to google analytic
  • 使用 UML 进行 C 编程

    我正在开发一个基于标准规范的嵌入式软件 该软件很大 在开始编码之前我需要设计我的软件 UML是一种面向对象的语言 可能是一个解决方案 但我不知道如何将它用于C软件 有没有任何文档可以帮助使用 UML 进行 C 编程 或者还有其他的c软件设计
  • 使用 cookie 保留整个网站的样式表偏好

    我有一个简单的 JavaScript 函数 它允许我在网站的每个页面中的不同样式表之间进行交换 目前 我的网站上没有实施任何 cookie 因此每当我进入新页面时 都会加载默认样式表 如果用户想要使用备用样式表 他们将被迫再次交换 我想通过
  • ios 中键盘显示方向错误

    我有一个viewcontroller在支持横向和纵向方向的应用程序中 单击按钮后 会出现一个弹出窗口 我应该在其中输入名称 在纵向模式下一切正常 但是 如果我关闭键盘 向左或向右旋转设备 然后打开弹出窗口 键盘仍会以纵向模式打开 I ve
  • 在c#中读取原始图像文件

    如何在未安装编解码器的情况下解码 打开 CR2 或 NEF 和 ARW 等原始图像文件 例如 lightroom 打开原始文件 我的代码如下所示 if fe CR2 fe NEF fe ARW BitmapDecoder bmpDec Bi
  • Xamarin MonoAndroid 设备管理

    我正在使用 Visual Studio 2017 来开发 Android 单视图应用程序 该应用程序应该是一个信息亭应用程序 我的目标是 API 21 在 Visual Studio AVD 设备 提供的模拟器上 我遇到的问题是我似乎无法制