在Android 8.1中访问WallpaperManager

2024-01-03

我正在构建一个启动器,需要访问用户当前的背景壁纸,但每次启动应用程序时都会收到警告W/WallpaperManager: No permission to access wallpaper, suppressing exception to avoid crashing legacy app.在日志中。

这是我正在使用的代码:

WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
Drawable wallpaperDrawable = wallpaperManager.getDrawable();

ImageView imageView = findViewById(R.id.background);
imageView.setImageDrawable(wallpaperDrawable);

此代码返回默认的库存背景图像,而不是我的实际背景图像。我在其他一些主流启动器(Evie、Launchair 等)上注意到了这个问题,但它似乎只发生在我最近更新的 Andorid 8.1 设备上。

进一步深入研究实际的 Android 源代码,我发现了这一点:

if (context.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.O) {
    Log.w(TAG, "No permission to access wallpaper, suppressing"
    + " exception to avoid crashing legacy app.");
} else {
    // Post-O apps really most sincerely need the permission.
    throw e;
}

但我似乎无法找到所需实际许可的参考。

任何帮助表示赞赏!


对于 Api 27 (Android 8.1) 设备,更改targetSdkVersion到 27 并添加READ_EXTERNAL_STORAGE清单的权限修复了这个问题。

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

在Android 8.1中访问WallpaperManager 的相关文章

随机推荐

  • MVC3中提交数据库数据后如何清除模型

    我正在数据库中提交一些数据 提交后我想显示同一页面 但我正在查看页面 文本框值不为空 ModelState Clear 我曾经用来清除文本框 但文本框值仍然保留 请建议我在mvc3中提交后清除模型 public ActionResult A
  • 重置 DBUnit 中的序列?

    我想在 Java DBUnit 中的每次测试后重置数据库 AND 序列 我已经看到这个问题 但没有我正在努力获得的代码解决方案 如何在DBUnit中使用Oracle序列号 https stackoverflow com questions
  • 在 ruby​​ 类中调用 Knife

    我想围绕刀创建一个很好的包装类 以允许程序以可读的方式运行刀命令 我目前正在尝试使用 Chef gem 中的 Knife rb 文件作为取得成功的指南 但是 我在关闭编辑器时遇到问题 如果我运行以下代码 require chef knife
  • 过滤数据集

    我有一个充满客户的数据集 我想知道是否有任何方法可以过滤数据集并仅获取我想要的信息 例如 要得到CostumerName and CostumerAddress对于有的客户CostumerID 1 是否可以 您可以使用DataTable S
  • Twitter Bootstrap - 如何根据 @media 定义的宽度更改 css 类

    这是我的第一个问题 但我只想说这个网站多年来帮助了我无数次 我想我已经到了有自己的问题要问的阶段了 抱歉 如果问题不清楚 我会尝试详细说明 我已经为我的一些元素分配了一个过渡 这样当它们悬停在上面时它们就会向上升起 即 example ho
  • Python 使用 Beautiful Soup 对特定内容进行 HTML 处理

    所以当我决定解析网站的内容时 例如 http allrecipes com Recipe Slow Cooker Pork Chops II Detail aspx http allrecipes com Recipe Slow Cooke
  • 如何在 Python 中处理命令行参数? [复制]

    这个问题在这里已经有答案了 如果我期望像 001 或 999 这样的东西 这次让我们将期望限制在 001 999 范围 并且传递的其他参数很少 并且希望忽略任何意外的参数 那么处理命令行参数的简单表达式是什么 我知道 例如 如果我需要查明
  • Facebook 身份验证对话框(JS SDK)返回空白屏幕

    我正在设置一个 Rails 应用程序并尝试通过 Facebook JS SDK 实现登录 已经缺少 Omniauth 无论如何 发生的情况是弹出对话框 用户提供登录信息 但随后它重定向到https www facebook com conn
  • 如何使用服务帐户访问 GSuite 电子邮件帐户的 GMAIL API

    我希望我的服务帐户能够模拟 GSuite 中的用户之一 我有 通过 GCP 创建项目 在项目中启用GMail API 向该项目添加了一个服务帐户 启用了domain wide delegation在服务帐户设置中GCP 添加了一个API C
  • .Net 中的缓存和 WebBrowser 控件

    我正在使用 Net 中的 WebBrowser 控件来执行一些第三方联属营销转换 我在数据库中有一个队列表 其中包含要执行的所有脚本 图像 我使用 WebBrowser 控件在 WinForms 应用程序中循环遍历所有这些内容 执行脚本 图
  • 使用 bash 命令结果设置 ant 属性

    我怎样才能设置antproperty 的值是 bash 脚本执行的结果 例如 我需要有一个利用的目标svn and bash实用程序以控制构建执行 更具体地说 我尝试创建的目标将用于定义通过命令部署的应用程序中是否有修改的文件 svn st
  • 使用 auto 的模板函数重载解析

    具有以下 3 个重载 template
  • 将 UITableView 滑动到屏幕上,继续滑动?

    我想要一个从屏幕外开始并可以在屏幕上滚动 到达顶部并继续滚动的表格视图 我在下面制作了所需交互的视觉效果 我尝试过两件事 但都没有完全按照我的需要工作 我做的第一件事是将表视图放入滚动视图中 并在表视图上检测到平移时移动滚动视图 这会阻止桌
  • Parsley.js - 仅验证数字的可选输入

    我有一个表单 其中有 1 个可选输入和 3 个必填输入字段 对于可选输入 我有以下标记
  • 在 Meteor 中配置 Iron 路由器 - React

    使用 Meteor 1 2 0 1 和 React 我的简单应用程序运行良好 但现在我需要铁路由器 https github com iron meteor iron router 应用程序布局 client app jsx lib rou
  • Emmet - 带缩写的换行 - 表示换行文本的令牌,即{原始文本}

    我正在尝试尽可能惰性地将 URL 列表转换为 HTML 链接 www annaandsally com au www babylush com au www babysgotstyle com au etc 使用缩写形式的wrapper 我
  • WebWorkers 的执行速度似乎比主线程慢得多

    我一直致力于优化一些长时间运行的 JAvaScript 并尝试实现 WebWorkers 我有一组独立的任务需要计算 在我最初的测试中 有 80 个任务 在主线程上完成需要 250 毫秒 我认为我可以将任务分配给一些网络工作人员 并将时间缩
  • Hibernate 中的枚举

    在 DAO 中拥有一个其值来自 Java 枚举的字段通常很有用 一个典型的示例是登录 DAO 其中通常有一个将用户特征描述为 NORMAL 或 ADMIN 的字段 在 Hibernate 中 我将使用以下 2 个对象以 半 类型安全的方式表
  • C++ 实验/文件系统remove_all

    我想删除 C 17 中包含子文件夹和文件的文件夹 我在用着experimental filesystem namespace filesys std experimental filesystem uintmax t n filesys r
  • 在Android 8.1中访问WallpaperManager

    我正在构建一个启动器 需要访问用户当前的背景壁纸 但每次启动应用程序时都会收到警告W WallpaperManager No permission to access wallpaper suppressing exception to a