问题标签 [android-8.1-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 - NotificationChannel 在 Oreo 中播放错误的声音
我在运行 Android Oreo 的设备中遇到了 NotificationChannel 声音这个奇怪的问题。
假设我的项目原始目录中有两个声音文件:
然后在第一次安装应用程序时,我使用它们的 uri 将这些声音分配给不同的通知通道(例如):
在这一点上,一切都按预期工作。当我开始添加新声音(在前面或中间)时出现问题:
然后相应地更改文件的资源 ID:
所以此时我的第二个通知通道开始播放 B.mp3 声音文件而不是 c.mp3,因为它是使用 android.resource://myapp/ 2131558404 uri 初始化的。
在使用新的声音文件编译应用程序后,c.mp3 的资源 ID 发生了变化。
那么这个问题的解决方案是什么,因为在创建通知通道后我无法修改它。
最明显的解决方案是不要在旧文件中间添加新文件,但可能会被遗忘。
也许我可以删除旧频道并使用新 ID 再次添加它?
或者有没有办法让原始文件具有恒定的资源ID?
android - Oreo 禁用自动填充 lint 安全错误
我正在对以下行进行代码清理并使用 Android Studio 的检查/分析功能:
它大喊“Android Lint:安全错误常量”,可笑的是:
必须是以下之一:android.view.View.IMPORTANT_FOR_AUTOFILL_AUTO、android.view.View.IMPORTANT_FOR_AUTOFILL_YES、android.view.View.IMPORTANT_FOR_AUTOFILL_NO、android.view.View.IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS、android.view.View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS
这是Android的某种已知错误吗,您以前有什么想法或见过吗?
android - Oreo:如何在源代码中找到所有受限制的系统调用?
https://android-developers.googleblog.com/2017/07/seccomp-filter-in-android-o.html
正如本文的“seccomp 过滤器”部分所说,
Android O 的 seccomp 过滤器会阻止某些系统调用,例如涉及某些安全攻击的 swapon/swapoff,以及对应用程序无用的密钥控制系统调用。总的来说,过滤器阻止了 arm64 中 271 个系统调用中的 17 个和 arm 中 364 个系统调用中的 70 个。
现在,一些系统调用被阻塞并抛出错误signal 31 (SIGSYS), code 1 (SYS_SECCOMP), fault addr -------- Cause: seccomp prevented call to disallowed system call 55
。
但是我找不到上面列出的 arm64 中的 17 个系统调用和 arm 中的 70 个系统调用的列表。哪些系统调用受到限制?如何找到导致崩溃的系统调用?
编辑:
似乎此错误消息是在此处生成的。
android - Android oreo - 一旦应用程序被杀死后的前台服务| android显示一个通知
应用程序的目标是 27,我正在 android oreo 8.0 设备上进行测试。
当用户点击下载按钮时,app 会启动前台 Intent 服务并通过通知通知用户。在onCreate
of 中IntentService
,app 也履行了调用该startForeground(int id, Notification notification)
方法的承诺。所以,
如果应用程序在前台,一切正常。但是当用户刷出并因此杀死应用程序时;我重新开始下载,它可以工作,下载开始;但 android 系统会显示一条通知 - “<#appname#> is running in background”。所以用户现在可以看到两个通知
- 我的应用程序中的一个显示下载进度和
- 另一个来自 android 系统,显示我的应用程序正在后台运行。
这样好吗?如何避免来自android系统的通知?
以下是我管理刷出应用程序终止的方法:
然后稍后在onReceive()
我调用:
总而言之, 一旦应用程序被杀死,如何避免从 android 系统显示应用程序在后台运行的通知?因为我已经向用户显示下载通知,所以用户知道这一点。
还有一个问题,有什么办法可以得到意图onCreate()
吗IntentService
?我需要获取下载内容的 id,它作为额外参数传入 Intent。因为基于此,我可以在其中显示通知onCreate()
到目前为止,我正在显示一个“开始下载”通知,然后onStartCommand()
我清除该通知并根据内容 ID 创建一个新通知。
android - Android:模型绑定 Spinner 重置为其条目列表中的第一个值
我使用 Androids 绑定来填充我的 Spinner 并在模型中设置所选项目。到目前为止,这工作正常。但是,当我加载具有先前设置的 Spinner 值的模型时,它总是设置为 Spinners 列表中的第一项。
这是来自布局文件的 Spinners 节选:
以及用于绑定的转换方法:
我找到了这个旧帖子,但(已接受)解决方案已经适用于我的代码。
android - FirebaseMessagingService 无法在后台使用一加 3 android oreo 8.0
当应用程序未运行并从最近的应用程序列表中删除时,Firebase onMessageReceived 永远不会调用。我正在使用 Firebase 并从我的服务器向我的应用程序发送数据有效负载通知,我尝试使用 JobScheduler 每 1 分钟启动一次 MyFirebaseMessagingService 以防系统正在终止我的服务,但这种方法在 One Plus 上对我不起作用3. 我知道android为了优化电池使用增加了后台服务限制,但是这个限制对FCM服务有影响吗?
这是我的消息字符串:
}
这是我在清单中的服务
android - Android oreo ble 后台连接
我需要永远保持连接。我如何在没有前台服务的情况下为 android Oreo 做到这一点?如果它被操作系统杀死,我需要恢复应用程序。并在重新启动后启动应用程序。我每次都需要搜索设备并尝试重新连接。你有什么建议吗?谢谢!
cordova - 8.1.0 中的 Android 屏幕方向问题
在 Android OS 8.1.0 中遇到问题
- 开始肖像活动(清单上的肖像声明)
- 开始景观活动(清单上的景观声明)
- 完成景观活动
- 纵向活动再次显示,但方向开始翻转:首先是纵向模式,然后是横向模式,最后是纵向。
我在操作系统版本 8.1.0 以上的 google pixel 2 xl 设备中观察到了这个问题(Android P developer preview1 中也存在这个问题)
我也看到有人在谷歌群组发帖
https://issuetracker.google.com/issues/69168442
但没有得到任何修复,我该如何解决这个问题。?
我的应用程序是混合应用程序(cordova),我也尝试在原生 android 中复制问题,但在原生 android 示例应用程序中不存在问题
android - 活动在 android 8.1 中自行旋转并恢复正常
我的应用程序在所有 android 版本上都运行良好,但我注意到在 Android 8.1.0 (Oreo) 中,当我将屏幕从纵向活动转到横向活动时,当我按下返回按钮时,它会显示异常行为。
屏幕自动从横向旋转并恢复正常。看起来 Activity 正在重新启动。
以下是清单文件中定义的活动。