Articles of android o

奥利奥 – 前台服务不显示前台通知

到目前为止,我已经修改了我的代码来使用ContextCompat.startForegroundService(context, intentService); 开始我的服务。 这样,它也可以在android <26和android 26(奥利奥)上运行。 我仍然看到一个区别,在Android奥多我没有看到我的自定义前景通知(我只看到“应用程序在后台运行”通知)。 我还需要调整什么吗? 我的服务如下所示: public class BaseOverlayService extends Service { @Override public void onCreate() { super.onCreate(); moveToForeground(); } private void moveToForeground() { Notification notification = …; super.startForeground(NOTIFICATION_ID, notification); } } 官方的例子 这个例子( https://github.com/googlesamples/android-play-location/blob/master/LocationUpdatesForegroundService/app/src/main/java/com/google/android/gms/location/sample/locationupdatesforegroundservice/LocationUpdatesService.java #L200 )显示为评论,我应该使用以下,但startServiceInForeground不存在… if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O) { NotificationManager mNotificationManager = ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)); mNotificationManager.startServiceInForeground(new Intent(this, BaseOverlayService.class), NOTIFICATION_ID, notification); […]

广播充电器在Android O中断开

现在Android O的最终API已经发布,并且以下广播都没有列入白名单。我有以下问题: 在我的应用程序(目标API 25),我目前有一个BroadcastReceiver监听ACTION_POWER_CONNECTED和ACTION_POWER_DISCONNECTED系统事件。 现在我想更新我的应用程序来定位Android O,但是这个版本带来了广播行为的巨大变化 : 面向Android O的应用程序不能再在其清单中注册隐式广播的广播接收器。 隐式广播是一种广播,并不是专门针对该应用的。 由于这两个广播都是隐式的,所以我只能通过Context.registerReceiver()方法注册它们,但是问题是:一旦我的应用程序的进程被系统杀死,或者一旦系统清除了我的应用程序的内存由于设备内存不足),广播注册将会丢失。 为了避免这个问题,我可以使用JobScheduler API和ACTION_POWER_CONNECTED的setRequiresCharging方法,但对于ACTION_POWER_DISCONNECTED我必须使用registerReceiver方法。 由于我的应用程序控制设备的音量(基于这些事件),这些事件都不会被遗漏,这一点非常重要。 那么我怎样才能安全地监听Android O中断开的电源事件呢? 顺便说一句。 我有与WIFI断开连接事件相同的问题。 编辑:我很乐意做这个没有来自前台服务的通知

Android中的android:appCategory O.哪个值?

Android O引入了应用类别的概念。 这些类别用于将类似用途或function的应用程序聚类在一起。 开发人员根据Android Ofunction和API文档,在AndroidManifest.xml使用android:appCategory声明。 文档不清楚的是这个属性是什么值? 我猜这将是一个离散的价值观而不是任何string。

Android O – 旧的启动前景服务仍在工作?

因此,如果您希望每小时只接收几次位置更新,则需要使用Android O将您的服务作为前台服务运行。 我注意到,开始前台服务的旧方法似乎在O上工作 startForeground(NOTIFICATION_ID, getNotification()); 根据这里的行为改变指南: https : //developer.android.com/preview/behavior-changes.html “NotificationManager.startServiceInForeground()方法启动一个前台服务,旧的启动前台服务的方式不再有效。 虽然新的方法只适用于O的目标,似乎旧的方法似乎仍然工作在O设备,无论是否定位O或不。 我错过了什么吗? //编辑包括例子: Google示例项目LocationUpdatesForegroundService实际上有一个工作示例,您可以直接看到问题。 https://github.com/googlesamples/android-play-location/tree/master/LocationUpdatesForegroundService startForeground方法似乎没有问题,无论是针对和编译API级别25或针对O编译和编译(如在这里: https : //developer.android.com/preview/migration.html#uya ) 所以,要重现: 按照上一个链接中提到的configuration应用程序gradle 打开应用程序 请求位置更新 closures应用程序(通过后退button或主页button) 服务在前台运行(通过通知栏中的图标显示)。 即使在运行O的设备上,位置更新也按预期(每10秒)进行一次。 这是什么让我觉得我可能会错过一些东西。

XML中的字体与Android O.

Android O给新的android-studio版本3.0的字体目录,但是当在字体目录中拖放字体文件,并运行项目,它给我在字体目录中的字体文件中的错误。 错误:任务':app:mergeDebugResources'的执行失败。 /home/ttuser4/Downloads/fontPractice/app/src/main/res/font/Dancing_Script.ttf:错误:文件名必须以.xml结尾

如何发送到“杂项”通知渠道?

问题描述 当我尝试在Android O中发送Notification ,我必须指定要发送到的NotificationChannel 。 如果我使用这个NotificationCompat.Builder(this)旧的方法(不设置任何通道NotificationCompat.Builder(this) ,这个Notification将不会被显示。 对于像这样的NotificationCompat.Builder(this, "invalid")或NotificationCompat.Builder(this, "")这样的无效通道也是如此。 当我通过Firebase Cloud Messaging发送通知,并在未指定通知通道的情况下在后台应用程序时,它将成为“其他”通道中的通知。 当我在前面提到的尝试做同样的事情时,将不会工作,也不会创build一个名为“Miscellaneous”和id “{package} .MISCELLANEOUS”的通知通道,然后通过它发送。 当我这样做时会发生以下情况: 我想知道的 我如何发送没有像FCM这样的频道的通知呢,所以它会出现在常规的“杂项”频道中? 这个工作的例子 正如我上面提到的,它发生在FCM通知 ,但是,例如, Gmail也使用其他渠道。 那么我该如何使用它? 我相信如果通常不能使用的话,他们会把杂项频道删除。 较短的描述 为什么这个代码不会向“其他”通知通道发送通知,实际上并没有发送任何通知(只在Android O上,代码在较低的Android版本上运行)。 (getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).notify(1, NotificationCompat.Builder(this, NotificationChannel.DEFAULT_CHANNEL_ID) .setSmallIcon(R.drawable.small_icon) .setContentTitle(URLDecoder.decode("Title", "UTF-8")) .setContentText(URLDecoder.decode("Text", "UTF-8")) .setColor(ContextCompat.getColor(applicationContext, R.color.color)) .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)) .setContentIntent(PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT)) .build())

在Android Studio中看不到“字体”资源types

我正在通过新的Android Ofunction,而新的东西之一是现在的应用程序可以直接添加字体到res文件夹。 根据android 文档处理字体,第一步是使用右键单击res文件夹并转到New> Android资源目录来创build一个名为“font”的新资源types。 但是在android studio的下拉列表中我看不到“font”选项可用于资源types。 以下是附图。 我不能在下拉菜单中看到“字体”选项,因此我无法创build字体android资源目录。 我的Android工作室的细节: Android Studio 2.3 Build#AI-162.3764568,构build于2017年2月24日JRE:1.8.0_112-release-b06 x86_64 JVM:由JetBrains提供的OpenJDK 64位服务器虚拟机

为应用程序禁用Android O自动填充服务

Android O具有支持自动填充字段的function。 有什么办法可以禁用它的特定应用程序。 这是我想强制我的应用程序不使用自动填充服务。 可能吗 ? 要阻止整个活动的自动填充,请在活动的onCreate()中使用以下代码: getWindow() .getDecorView() .setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS); 有没有比这更好的方法?

Notification.Builder(上下文)已弃用Android O

Notification.Builder(上下文)最近已被弃用Android O通知渠道的地点。 问题: 在使用Notification.Builder(context, StringID)而不是Notification.Builder(context)我收到了一个通知给我的Android O设备。 但是,在Android 23(M)上尝试后,我没有收到通知。 我debugging了我的代码,只要debugging器在Android 23(M)上点击Notification.Builder(context,StringID)行后就停止执行。 固定: 要解决这个问题,我使用if / else条件在Android O设备和其他设备之间进行隔离。 我有以下代码片段: Notification.Builder notificationBuilder; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { notificationBuilder = new Notification.Builder(mContext, mContext.getResources().getString(R.string.notification_id_channel)); } else { notificationBuilder = new Notification.Builder(mContext); } Android Studio中的Lint显示以下弃用行: 题: 有没有办法摆脱这个贬低警告线?

Android O报告通知没有发布到频道 – 但它是

几个Android O通知问题: 1)我创build了一个通知通道(见下面),用.setChannelId()调用构build器(传入我创build的通道名称“wakey”;然而,当我运行该应用程序时,我没有发布通知通道“空”。什么可能导致这个? 2)我怀疑#1的答案可以在它所说的“日志”中find,但我已经检查了logcat并没有看到有关通知或通道的任何信息。 它在哪里看到的日志? 以下是我用来创build频道的代码: NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); CharSequence name = context.getString(R.string.app_name); String description = "yadda yadda" int importance = NotificationManager.IMPORTANCE_DEFAULT; NotificationChannel channel = new NotificationChannel(NOTIFICATION_CHANNEL, name, importance); channel.setDescription(description); notificationManager.createNotificationChannel(channel); 以下是生成通知的代码: Notification.Builder notificationBuilder; Intent notificationIntent = new Intent(context, BulbActivity.class); notificationIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); // Fix for https://code.google.com/p/android/issues/detail?id=53313 PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); Intent […]