问题标签 [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.
android-8.0-oreo - Android O 不显示前台服务通知
根据文档,我已经在应用程序中进行了更改,以便在后台使用context.startForegroundService(Intent)
然后startForeground
像以前一样调用服务来启动服务。
这会在 Android N 设备上正确显示通知,但在 Android O 设备上它不会显示通知,它只显示新的“正在后台运行...点击以获取有关电池和数据使用情况的更多详细信息”
是否缺少让通知在 Android O 上正确显示的内容?
android - Android O 中的 Android_ID 替代方案
随着 Android O 中的更改,ANDROID_ID 现在按应用签名密钥以及按用户进行限定。恢复出厂设置也会生成新的 ANDROID_ID 值。
我的问题是,除了 Android ID,你们还使用什么其他替代 ID(更有效)?
我做了一些研究得知谷歌建议我们使用 AdvertisingId,但用户可以随时重置他们的 AdvertisingId。
我还查看了 Key/Value 备份以备份现有的 Android ID 并将其与新值相关联。这种方法很好,但备份与 Google 帐户相关联。因此,如果用户重置设备并使用不同的 Google 帐户登录,这将不起作用。
我的目标是获取用于欺诈/恶意检测的设备特定标识符,我很难确定要使用哪种标识符。我知道我可以只使用 IMEI,但谷歌建议避免使用它,它也需要android.permission.READ_PHONE_STATE
许可。
android - Notification.Builder(context) deprecated Android O
Notification.Builder(context) has been deprecated recently with the venue of Notification Channels in Android O.
PROBLEM:
After using Notification.Builder(context, StringID)
instead of Notification.Builder(context)
I did receive a notification to my Android O device.
However, after trying that on an Android 23 (M), I did not receive a notification. I debugged my code and it just stopped executing once the debugger hit the line post Notification.Builder(context, StringID) on Android 23 (M).
FIX:
To Fix this issue, I used if/else condition to segregate between Android O devices and the rest of other devices.
I have the following code snippet:
Lint in Android Studio is displaying the following deprecation line:
QUESTION:
Is there a way to get rid off that deprecation warning line?
android - 如何让 adb shell ps 列出 Android O 中的所有进程?
adb shell ps
在 O android 版本中不起作用
adb shell ps
Android O 版本中的命令仅列出ps
进程信息,但它并没有像以前的 android 版本中那样列出所有进程的所有进程信息
列出android O版本中所有进程信息的命令是什么?
android - Android O 文本对齐希伯来语
我知道这里有很多关于在 Android 中证明文本的讨论。但是 Android O 刚刚问世,并且出现了一个新功能,文本对齐。JUSTIFICATION_MODE_INTER_WORD
他们说使用课程中包含的final TextView
。随着setJustificationMode()
. 当我将它与英语一起使用时它确实有效,但当我将它与希伯来语一起使用时它无法正常工作。我将其设置为:
我也试过放android:gravity="right"
,但也没有用。我无法想象谷歌没有考虑将它与其他语言一起使用。
android - 当目标小于它时,如何在 Android O 上创建快捷方式?
背景
Android O 对快捷方式的工作方式进行了各种更改:
https://developer.android.com/preview/behavior-changes.html#as
问题
根据 Android O 最近的变化,创建快捷方式的广播意图被完全忽略:
https://developer.android.com/reference/android/content/Intent.html#ACTION_CREATE_SHORTCUT https://developer.android.com/preview/behavior-changes.html#as
com.android.launcher.action.INSTALL_SHORTCUT 广播不再对您的应用产生任何影响,因为它现在是私有的隐式广播。相反,您应该使用 ShortcutManager 类中的 requestPinShortcut() 方法创建应用快捷方式。
例如,这意味着无论您制作了哪个应用程序或用户拥有哪个启动器,此代码都将不再工作:
目前,即使是 Play 商店本身也无法创建应用程序的快捷方式(至少在当前版本中:80795200)。它只是没有做任何事情,即使对谷歌的启动器也是如此。
问题
虽然我非常反对 API 的这种更改(并在此处、此处和此处写过有关它的内容) ,但我想知道如何才能使其正常工作。
我知道有一个使用requestPinShortcut的 API ,但这需要应用程序以 Android O 为目标,这意味着必须进行更多更改以确保应用程序在那里工作。
我的问题是:假设您的应用程序以 Android API 25 为目标,您如何在 Android O 上创建快捷方式?是否可以通过使用较新 API 的反射来实现?如果是这样,怎么做?
android - 将 gradle 设置为 Android O (API 26)
Android Studio 已自动将以下组件更新为 API 26:
- ROM - SDK 到 API 26
- Android SDK 构建工具 26
- 安卓模拟器 26.0.3
- Android SDK 平台-工具 26.0.0
- 安卓 SDK 工具 26.0.2
我的毕业 2.3.3:
我有两个问题(请参阅 Gradle 中的注释行):
我怎么知道这些库的最新版本(我只是简单地抛出随机数并尝试升级它们,直到找到最新版本)。
在排除组中有“com.android.support”,如果我删除它,我需要指定这些库吗?我看到很多人以这种方式包括“com.android.support”库,所以我想这样做是有原因的。
我在 developer.android.com 中搜索,最新版本是 24.2.0(真的很老,我一直在使用 25.3.1)。
android - Android studio - 更改 .gradle 文件夹位置
我目前正在为我已发布的 Android 应用程序测试 Android O。
我的 Gradle 每次都失败,因为它正在寻找文件:“C:\Users\M?lanie.gradle\caches”。如您所见,我的名字包含有问题的字符,因此我已经移动了我的 Android sdk。
我怎样才能移动 .gradle 文件夹呢?
我尝试将“GRADLE_USER_HOME”设置为“C:\Android\gradle”(该文件夹存在),但 Android Studio 的行为仍然相同。
android - Android O & Gradle
当我将设备升级到 Android O 时,我试图调查一些奇怪的通知事情。所以我更新了 build.gradle 以编译 26,使用构建工具 26.0.0 和 targetSdkVersion.apiLevel = 26。
一旦我这样做并尝试构建,我就会收到以下错误,因为我有 Gradle 3.3
所以它希望我更新到 3.5,一旦我这样做,我就会收到以下错误,说我需要恢复到 3.3
我假设我的 3.3 错误是因为我使用的是实验性 Gradle 0.9.2。但是一旦我使用除此之外的任何东西,由于其他错误列表,我无法编译应用程序。我最喜欢的是“Arm 的 Null 维度。
我的 build.gradle 版本 compileSdkVersion = 26 buildToolsVersion = '26.0.0'
注意:我使用的是 Gradle 的实验版本,因为我的应用程序使用 NDK。
android - 如何在设备空闲时使用 Android O 发送位置更新?
在我的代码示例中,当 Android O 设备进入空闲(打盹)模式时,不会在 Android O 设备上发送位置更新。有没有人让这个工作?在 Android O 之前的任何设备上都没有问题(在 API 26 添加位置更新限制之前)
有问题的代码在这里: https ://github.com/jcraw/api_26_location_updates_idle
MainActivity 绑定到前台服务,该服务将位置更新放入 logcat。
代码测试如下:
- 创建虚拟设备 (Pixel API 26)
- 在虚拟设备的“扩展控件”中,加载并启动 GPX 文件
- 使用虚拟设备上的电源按钮禁用屏幕
- adb shell dumpsys 电池拔掉
- adb shell dumpsys deviceidle 步骤
- 重复步骤 5,直到设备处于 IDLE 状态