问题标签 [android-8.0-oreo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
496 浏览

java - Android O - 后台服务限制未按预期工作

我只是在针对 Android O 背景限制测试我现有的 android 应用程序。

在测试中,我发现了一个奇怪的行为。所以基本上在我的应用程序中,我正在使用后台服务,并且我在第一个活动中启动它。

所以现在的问题是一旦活动和后台服务启动,我正在使用后退按钮关闭我的活动。因此,根据服务概念,它一直在后台运行。

大约 1 分钟后onDestroy(),调用了后台服务的方法,但服务仍在运行。理想情况下,根据文档,它应该被杀死。

所以,我不知道这是一个问题还是什么。

作为参考,我创建了一个反映相同场景的示例代码,如下所示:

脚步

  • 开始申请
  • 单击启动后台服务按钮。
  • 使用后退按钮关闭应用程序。

HomeActivity.java

我的服务.java

0 投票
2 回答
3678 浏览

android - Android O 中的 Android_ID

我们使用以下代码获取唯一 ID:

在 Android O 更改指南中,我们可以看到以下几点:

Android O 对平台进行了以下与隐私相关的更改。 https://developer.android.com/preview/behavior-changes.html

我对上述内容的理解是,现在 Android_ID 将是应用程序绑定而不是设备绑定。但是我对以下几点感到困惑:

对于在 OTA 之前安装的应用程序,ANDROID_ID 的值保持不变,除非卸载然后重新安装。如果您希望继续使用 Android ID 进行设备绑定免费试用保护,您可以这样做。确保包名称和签名匹配。

1)这是什么意思?除非重新安装我的应用程序,否则即使我们发送更新,它也会继续使用旧版 android_id?

2) 如果您希望继续使用 Android ID 进行设备绑定免费试用保护,您可以这样做。确保包名称和签名匹配。:这是什么意思?

0 投票
1 回答
544 浏览

android - Android O,后台服务运行超过 30 分钟。为什么?

我正在使用 FusedLocationProvider API 向 PendingIntent 注册一些地理围栏,当我的应用程序通过地理围栏事件启动(应用程序被手动终止以触发此行为)时,我启动了一个后台服务来做一些工作。

在此服务中,我创建了一个单独的后台线程来执行一些长时间运行的任务,并获得了一个唤醒锁,以确保我的任务已完成。该服务会持续运行更长的时间(30 - 50 分钟),即使它不应该如此。根据我对 Android O 近期变化的理解,它不应该被列入白名单并让自己运行更长的时间。

是 PendingIntents 唤醒应用程序的期望行为还是某种错误,然后它被视为白名单,即使这些 Intents 不是用于通知(即用户可以看到的任何内容)。

或者这些意图属于“接收广播,例如 SMS/MMS 消息”的类别。如文档中所述

0 投票
1 回答
193 浏览

location - 重启后如何接收位置更新

我正在使用此示例接收位置更新:

https://github.com/googlesamples/android-play-location/tree/master/LocationUpdatesPendingIntent

在我使用连接的 Google API 客户端实例注册位置请求后,它会接收位置。我的问题是如何在设备重启后重新注册 Google Api Client?有人说Android O会限制后台服务,所以不推荐一个服务?

我发现这个链接很有用,但仍然不知道操作系统的实际行为以及是否将我的应用程序视为前台或后台?

https://developer.android.com/preview/features/background.html#services

0 投票
5 回答
3912 浏览

android - Android O (API 26) 预览模拟器无法启动

我下载了 Android Studio 3.0 Canary 1 预览版并使用 AVD 管理器下载了 Android O x86 系统映像。当我使用向导设置 AVD 时,使用 Pixel 手机作为硬件。当我启动模拟器时,它只是永远挂在启动屏幕上。

0 投票
1 回答
190 浏览

android - Android O 开发者预览版缺少 android.arch 包

我使用https://developer.android.com/preview/migration.html来开始使用 O 开发者预览版,尤其是架构包android.arch。我的android-OSDK 平台文件夹 ( ~/Library/Android/sdk/platforms) 中有该文件夹,并相应地设置了我的 gradle 文件,但 Android 3.0 找不到新类,例如ViewModel. 缺少什么使它起作用?

相关:缺少 Android L 开发者预览包?

0 投票
12 回答
35394 浏览

android - TextView 的自动调整大小不起作用(Android O)

我使用支持库 26 中添加的新自动调整大小功能。我阅读了可以在此处找到的文档: https ://developer.android.com/preview/features/autosizing-textview.html

我想它应该以这种方式工作:您可以使用此属性启用自动调整大小:app:autoSizeTextType="uniform"。我认为TextView应该使用所有可用空间来显示整个文本(不仅仅是一部分 - 它不应该被裁剪)并且textSize应该尽可能大。如果您需要限制文本的最大或最小大小,则可以使用以下两个属性:

或者

到现在为止还挺好。假设我需要一个宽度为 56dp 的 TextView。我有不同长度的文本,我想将这些文本设置为 this TextView。它应该自动调整大小,以便以最大可能显示整个文本(所有字符+未裁剪)textSize

这是我的文本视图:

不幸的是,文本视图被裁剪了。我想将此字符串设置为上面 TextView 的文本:“Groupa”,但结果如下: 在此处输入图像描述

(TextView 位于带有黄色圆圈背景的 ConstraintLayout 内。)

如您所见,textview 根本没有调整大小。你知道该怎么做吗?

谢谢。

0 投票
2 回答
1951 浏览

android - adb -d shell "run-as ..." 在 Android O 上不起作用

是否发生了一些变化,以下命令不再适用于 Android O?

跑步:

  • 构建:OPP2.170420.019
  • 设备:Nexus 6P

我已经尝试了无数种方法,但即使是 /sdcard 的 cat 或 cp 也无济于事。我猜一些权限已经改变,我们不能再使用 run-as package.name。

我能够从我的非根 Android O 设备获取数据的唯一方法是使用 FileProvider 并复制到 /sdcard。

有没有人在调试包上使用 run-as 成功?有人和我有同样的问题吗?

0 投票
4 回答
7054 浏览

android - Android O Preview findViewById 编译错误

我尝试测试 Android O Developer Preview 第二阶段。创建项目后,我只是单击了构建并运行,但没有任何成功。

Android默认生成代码如下:

发生编译错误。

帮我!如何修复此错误?

编辑#1

=> 编译错误

错误:(18, 27) 错误:对 findViewById 的引用不明确,Activity 中的方法 findViewById(int) 和 AppCompatActivity 中的方法 findViewById(int) 匹配,其中 T 是类型变量:T 扩展在方法 findViewById(int) 中声明的视图

这不是铸造问题。

我的 build.gradle 在这里。

我尝试使用 Android Oreo Developer Preview 2。并使用 Android Studio 3.0 Canary 版。

0 投票
0 回答
503 浏览

android - 如何监控 SIM 状态变化(Android O)

我已经看到了这个答案,但它仅与 Android pre-O 有关。隐式广播不再适用于 Android O。我知道我可能会注册一个运行时侦听器,但这不适用于我的用例。如果我是在直接与 OEM 合作的设备上预加载的系统应用程序,我能否获得此广播的白名单并仍能接收它?