Articles of android o

包ID平台:android-O不可用

在尝试从github克隆Android O示例时,项目无法同步并提供以下错误。 Android studio提供的包不可用 ,因而无法安装缺失的平台(android o)。 我正在使用android studio 2.3并克隆android o示例: https : //developer.android.com/preview/o-samples.html#nc 任何人都可以建议,我怎样才能运行克隆的例子?

媒体控制通知在Android O上发出警报

自从添加对Android O的支持后,每当我的应用程序的媒体控制通知得到更新(元数据或播放状态更改)时,运行O的Android设备都会收到警报(音调或振动)。 我正在寻找一种方法来禁用此警报,因为它不适用于媒体样式通知。 这是我用来创建媒体控件通知的代码: MediaDescriptionCompat description = metadata.getDescription(); String artistName = metadata.getString(MediaMetadataCompat.METADATA_KEY_ARTIST); String albumName = metadata.getString(MediaMetadataCompat.METADATA_KEY_ALBUM); Bitmap largeIcon = BitmapFactory.decodeResource(playbackService.getResources(), R.drawable.vector_global_defaultsong); NotificationCompat.Builder notificationBuilder = new NotificationCompat .Builder(playbackService, NotificationHelper.CHANNEL_MEDIA_CONTROLS) .setColor(ContextCompat.getColor(playbackService, R.color.colorAccent)) .setSmallIcon(R.drawable.logo_light_filled) .setContentTitle(description.getTitle()) .setContentText(playbackService.getString(R.string.song_list_subtitle_format, artistName, albumName)) .setContentIntent(createContentIntent()) .setDeleteIntent(MediaButtonReceiver.buildMediaButtonPendingIntent(playbackService, PlaybackStateCompat.ACTION_STOP)) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setOngoing(playbackState.getState() == PlaybackStateCompat.STATE_PLAYING) .setLargeIcon(largeIcon); notificationBuilder.setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle() // show previous, play/pause, and next in compact view .setShowActionsInCompactView(addActions(notificationBuilder)) […]

在目标android 26的所有窗口上方显示PopupWindow

我想在没有请求SYSTEM_ALERT_WINDOW情况下在所有窗口上显示PopupWindow (例如:另一个popup窗口,对话框,另一个活动屏幕),所以我使用WindowManager.LayoutParams.TYPE_TOAST public void showSimplePopupWindow() { final View popupView = layoutInflater.inflate(R.layout.popup_layout_2, null); final PopupWindow popupWindow = new PopupWindow(popupView); …config popup window… PopupWindowCompat.setWindowLayoutType(popupWindow, WindowManager.LayoutParams.TYPE_TOAST); popupWindow.showAsDropDown(findViewById(R.id.button_show_popup_window)); } 如果我设置targetSdkVersion < 26它在所有Android版本中运行良好。 目前,如果我保留上面的代码并将目标targetSdkVersion更新为26,那么它将与设备api 25-26崩溃,exceptionandroid.view.WindowManager$BadTokenException: Unable to add window — token android.view.ViewRootImpl$W@859d91f is not valid; is your activity running? android.view.WindowManager$BadTokenException: Unable to add window — token android.view.ViewRootImpl$W@859d91f is not valid; […]

在Android 8.0以上。 有没有办法知道系统中有pip模式

在Android Oreo中。 活动可以进入点模式并返回启动器。 https://developer.android.com/guide/topics/ui/picture-in-picture.html 现在我是发射器。 有没有办法知道目前屏幕上是否显示了一个点子窗口? isInPictureInPictureMode()仅指示您的应用程序pipmode,如果有其他应用程序进入pip模式,则该pipmode将为false。 退出应用程序并转到pipmode返回启动程序时,intent标志是相同的。 12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_FORWARD_RESULT 12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_NEW_TASK 12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_PREVIOUS_IS_TOP 12-15 03:31:39.581 11671 11671 D FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_BOOT_UPGRADE 12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_FOREGROUND 12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_INCLUDE_BACKGROUND 12-15 03:31:39.581 11671 11671 D […]

如何在Android Oreo中运行隐式广播?

我已阅读其他解决方案,但由于Android O中的广播限制,我正在创建新问题。 我的应用正在制作Google Play音乐应用的广播。 当用户播放音乐时,它将保存音乐的数据。 清单文件中的接收者声明如下: 它在版本O之前完美无缺。我已经阅读了O中的后台执行限制 。 默认情况下,这些更改仅会影响针对Android 8.0(API级别26)或更高级别的应用。 但是,即使应用程序的API级别低于26,用户也可以从“设置”屏幕为任何应用启用这些限制。您可能需要更新应用以符合新的限制。 当应用程序未在后台运行时,如何使用Job Scheduler在Android O(如以前的Android版本)中运行播放音乐的广播?

是否可以使用IMPORTANCE_MIN将前台服务通知放入通知通道中?

我目前正致力于将应用程序转换为Android O,目前我正致力于通知渠道。 我已经创建了具有不同重要性级别的不同通道,并且由于应用程序具有必须一直运行的前台服务,直到我们转换到新架构(更面向推送),我想到将该通知放在具有其重要性的通道中设置为IMPORTANCE_MIN ,以便它存在,但它不会打扰用户,也不会在状态栏中放置图标。 但是,当我这样做,并且我将我的应用程序放在后台(使用Home或Back按钮)时,我收到Android系统通知,告诉我我的应用程序正在后台运行,如下所示: 如果我更改了我的频道并使其使用IMPORTANCE_LOW ,则问题就会消失,但是通知更加突出。 所以,我的问题是 – 是否可以做我正在尝试的事情? 我知道系统不允许开发人员这样做,因为如果你有一个前台服务,它应该对用户可见,但这只是一个猜测,我没有find关于这个的文档,这就是为什么我是发布这个问题。 我的第二个问题是 – 在O之前,如果您将通知的优先级设置为PRIORITY_MIN ,您是否可以将该通知绑定到服务以使其成为前台服务,或者从一开始就是禁止通知? 编辑 :确认Android系统显示重要性为IMPORTANCE_MIN频道的通知(谢谢,M66B),那么现在仍然存在的问题是什么原因? 有谁知道这背后的原因,或者可以在任何地方find任何文件? 这可能是应该向跟踪器报告的错误吗?

持续运行后台服务

我的目标是sdk版本27,最低版本为19,并试图获得在后台持续运行的服务。 我尝试了不同的服务启动选项,但它仍然被应用程序杀死。 我尝试使用BroadcastReceiver在它被杀死时启动该服务但是这给了我一个错误,说应用程序在后台并且无法启动服务所以我尝试使用JobScheduler并且这给了我同样的错误。 应该怎么做? 例如,如果我正在制作计步器应用程序,我怎么能让它在后台运行?

Android通知未在API 26上显示

我最近将我的应用更新为API 26,并且通知不再有效,甚至没有更改代码。 val notification = NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_notification) .setContentTitle(“Title”) .setContentText(“Text”) .build() (getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).notify(1, notification) 为什么不工作? 是否有一些我不知道的API变化?

Android O预览findViewById编译错误

我试图测试Android O Developer Preview的第二阶段。 项目创建后,我只是点击了构建并运行但我没有任何成功。 Android默认生成的代码如下: Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 发生编译错误。 Error:(18, 37) error: reference to findViewById is ambiguous both method findViewById(int) in Activity and method findViewById(int) in AppCompatActivity match where T is a type-variable: T extends View declared in method findViewById(int) 帮我! 我该如何解决这个错误? 编辑#1 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar […]

在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断开连接事件的相同问题。 编辑:我希望没有来自前台服务的通知我这样做