问题标签 [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.

0 投票
1 回答
54 浏览

android - Android compileSdk 27​​ 启动服务自动显示通知

我有一个启动服务的应用程序。我知道 Android Oreo 有一些限制,所以我使用以下代码启动了我的服务:

在 onCreate() 方法的 BeaconService 类中,我调用了 startForeground() 方法。我是这样做的:

我的问题是,当此服务启动时,我收到一个空通知,表明我的应用程序正在运行。为什么?当我的应用程序在前台运行时,我不希望收到此通知。

0 投票
1 回答
550 浏览

android - getBytes("UCS-2") 在不同 API 级别的不同设备中返回不同的结果

目前我对以下代码有疑问:

此代码已在两种不同的设备上使用过,一种运行 Android 8.0,另一种运行 Android 8.1,我得到了两种不同的结果:

在安卓 8.0 中:

-1, -2, 48, 0, 57, 0, 51, 0, 50, 0, 51, 0, 48, 0, 48, 0, 48, 0, 57, 0, 48, 0

在安卓 8.1 中:

-2, -1, 0, 48, 0, 57, 0, 51, 0, 50, 0, 51, 0, 48, 0, 48, 0, 48, 0, 57, 0, 48

结果似乎是成对交换的:[-1 -2] vs [-2 -1] ... [48 0] vs [0 48]。

那么这里的问题是什么?Java或Android有什么变化吗?

0 投票
1 回答
1735 浏览

push-notification - 通知分组在 Android 8.1 中不起作用

我正在使用 FCM 在 8.1 版本的 Android 设备上发送通知。我正在尝试实现通知的分组,并且我已经实现了。

每当第一个通知在状态栏中并且第二个通知到达时,第一个通知就会消失。从病房的第二个通知开始,所有通知都按预期显示在组中。

如何解决?

在下面发布代码狙击手。

0 投票
0 回答
498 浏览

android - 使用 PendingIntent.getBroadcast() 的 GeoFence 不起作用

我正在尝试Geofence触发 aBroadcastReceiver并且BroadcastReceiver具有从意图读取数据并对意图发送的数据进行操作的代码。我BroadCastReceiver的是GeoLocationBroadCastReceiver。当我的活动打开并且应用程序处于后台时,我正在调用此代码。

PendingIntentGeofencingRequest.Builder(此数据在 addGeoFence 方法中返回)一起传递给 addGeofences 方法。

当我调用上述代码时,地理围栏已成功添加。

Manifest.xml 文件中的接收方声明:

问题:我没有收到广播,也没有调用接收器。我看到谷歌建议的方法是使用广播来克服服务的背景限制。我也知道广播限制(列入白名单和列入黑名单)。但根据谷歌代码实验室,建议的方法是使用广播。谷歌代码实验室链接在这里

来自谷歌代码实验室:

以 O 为目标的应用程序还受到后台启动服务的限制。因此,面向 O 的应用程序在请求位置更新时不应使用 PendingIntent.getService()。相反,他们应该使用 PendingIntent.getBroadcast()。

0 投票
0 回答
3394 浏览

android - 由于 FirebaseInstanceIdReceiver 中的 Intent { act=com.google.android.c2dm.intent.RECEIVE 广播而导致 ANR

**意图广播 { act=com.google.android.c2dm.intent.RECEIVE flg=0x11000010 pkg=in.swiggy.android cmp=in.swiggy.android/com.google.firebase.iid.FirebaseInstanceIdReceiver(有附加功能) }

com.google.firebase.iid.FirebaseInstanceIdReceiver**

在 Android 8 ND 8.1 设备中

来自谷歌播放控制台的堆栈跟踪:

升级到 Android Oreo 后我遇到了这个问题。有什么解决办法吗?

0 投票
2 回答
212 浏览

android - Oreo - 无法通过 WebView 中的 setUserAgentString 设置新值

我在运行 API 27 (8.1.0) 的设备中的 WebView 中遇到问题。

我在 userAgentString 中传递了我的参数,php 页面根据该参数加载适当的数据。当我第一次打开 WebView 时,它运行良好。

但是,每当我在第一次之后打开 WebView 时(每次加载时我都会调用 setUserAgentString,并使用新值),它会保留 userAgentString 的旧值,因此不会加载正确的数据。无论我是在同一个活动中并重新使用同一个 WebView,还是移动到使用新 WebView 实例的不同活动,都会发生这种情况。

以下设备给出了这种奇怪的行为 -

  1. 谷歌 Pixel 2XL,版本 8.1.0
  2. 小米米 A1,版本 8.1.0

...并且 webview 在以下设备上运行良好,没有显示这种行为 -

  1. 三星 GALAXY Tab SM-T825,版本 8.0.0
  2. 摩托 G4,版本 7.0.0
  3. HTC Desire 526,版本 4.4.2

我认为这可能与 Android Webview 实现如何更改为 Oreo 中的 Chrome 有关。

但是,无论我在开发人员设置中设置为“Webview 实现”如何,行为都没有改变,这意味着这可能不是原因。

此外,只有当我清除数据或进行全新安装时,才会重置 userAgentString 值。

我已经阅读了数十篇关于 SO 的帖子,并尝试了各种与 WebView 和 WebSettings 相关的方法,但我还没有设法找到解决方案。

我在这里想念什么?

0 投票
1 回答
1111 浏览

android - Android 8 (Oreo) 中的后台位置限制是什么?

https://developer.android.com/about/versions/oreo/background-location-limits

为了降低功耗,Android 8.0(API 级别 26)限制了后台应用程序检索用户当前位置的频率。应用每小时只能接收几次位置更新。

该文档没有详细说明背景位置检索频率的限制。

假设我在 Android O 设备上运行的应用程序没有进入前台并且没有收到任何被动位置更新,我可以可靠地期望它接收多少次位置更新?

“只有几次”究竟是多少次?

0 投票
1 回答
335 浏览

android - Android UI 横向拉伸

我有一个横向拉伸的自定义显示器,分辨率为 1920x720,屏幕尺寸为 10.3 英寸,纵横比为 8:3。我正在为这个屏幕使用 android 演示类。使用演示类时,android 屏幕 UI 默认适合显示器,没有任何底部或顶栏(甚至不是主页或后退按钮),即整个屏幕将充满应用程序 UI。如何为此分辨率和纵横比制作 UI?为什么我的图像在我的应用程序 UI 中被横向拉伸?

0 投票
1 回答
1451 浏览

android - 在应用关闭或暂停状态时处理 Android Oreo 中的 FCM 通知

显示通知图标、标题、消息和优先级有默认的处理通知键,使用高优先级推送通知可以在我们点击通知时唤醒应用程序,并通过与启动 Activity 应用捆绑来访问信息。但问题是如何将额外数据放入通知中,当我尝试将额外数据添加到 Json 的“通知”部分时,操作系统不显示通知。那么我该如何处理这个问题..?部分进入Json,操作系统不显示通知。那么我该如何处理这个问题..?部分进入Json,操作系统不显示通知。那么我该如何处理这个问题..?

0 投票
0 回答
220 浏览

android - Android Screen On and Screen Off 接收器在启动后不会触发,除非将活动置于焦点(使用 Oreo)

我在搞乱广播接收器。我想锁定启动,屏幕开启和屏幕关闭。如果我设置一个启动,它工作正常:

在 AndroidManifest.xml 中:

和接收器:

如果我重新启动手机,我可以在 Logcat 中看到启动时间信息。按预期工作。

但是,我还有两个接收器,一个用于屏幕打开,一个用于屏幕关闭,它们的行为不一样。

编码:

接收器:

我的应用程序:

这两个不会记录任何东西,除非我将(已经运行的)应用程序(或者更确切地说它的活动,它没有什么特别的)聚焦一次。然后他们每次都开火。如何确保 SCREEN_OFF 和 SCREEN_ON 接收器在启动后立即接收?

编辑:我注意到了一些东西!首先,AndroidManifest 中对两个屏幕接收器的声明似乎不会影响应用程序的工作方式,因此可以将它们注释掉。其次,接收器在启动后工作,只要我快速打开和关闭屏幕,然后他们......死或进入睡眠状态,直到我将活动带回前面。