Articles of android o

Notification.Builder(context)已弃用Android O

Notification.Builder(context)最近因Android O中的Notification Channels场地而被弃用。 问题: 在使用Notification.Builder(context, StringID)而不是Notification.Builder(context)我收到了通知我的Android O设备。 但是,在Android 23(M)上尝试后,我没有收到通知。 我调试了我的代码,一旦调试器在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 Developer Preview模拟器始终处于脱机状态

我正在尝试针对Android O开发人员预览测试我的应用。 我可以下载并运行模拟器,但在部署我的应用程序时,它总是显示为“[OFFLINE]”。 如果我继续尝试部署,我得到以下输出: com.android.ddmlib.AdbCommandRejectedException: device unauthorized. This adb server’s $ADB_VENDOR_KEYS is not set Try ‘adb kill-server’ if that seems wrong. Otherwise check for a confirmation dialog on your device. Error while Installing APK 我已尝试按照上面的输出中的建议重新启动ADB。 此外,我从未在模拟器中获得确认对话框。 其他版本的仿真器。 例如。 Nougat 7.1工作正常。 我正在运行Android Studio 3.0 Canary 1(标准频道也不起作用)。

Android O – 单线通知 – 就像“Android系统 – USB充电此设备”

我想继续通知我的ForegroundService ,它需要尽可能小的地方。 我喜欢“Android系统 – USB充电这个设备”的风格,但我找不到任何如何实现这个的例子。 谁能指出我正确的方向? 更新 如果为通道分配了重要性IMPORTANCE_MIN则会为通知指定样式。 看起来没有办法使用内置样式的Androids来将IMPORTANCE_MIN通知与ForegroundService一起使用。 以下是IMPORTANCE_MIN的说明: 最小通知重要性:仅在阴影下方显示。 这不应该与Service.startForeground一起使用,因为前台服务应该是用户关心的东西,因此将其通知标记为最低重要性并不具有语义意义。 如果您从Android版本Build.VERSION_CODES.O开始执行此操作,系统将显示有关您的应用在后台运行的更高优先级通知。

Android vibrate已弃用。 如何在Android> = API 26中使用VibrationEffect?

我正在使用Android的VIBRATOR_SERVICE为按键触摸提供触觉反馈。 ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(300); Android Studio告诉我警告方法vibrate(interval)已弃用我应该使用VibrationEffect for API> 23。 所以我使用了VibrationEffect的方法createOneShot ,它采用2个参数:间隔和幅度。 我试着寻找它,但不知道要传递什么作为amplitude ,任何人都知道如何使用它? 更新添加的代码 // Vibrate for 150 milliseconds private void shakeItBaby() { if (Build.VERSION.SDK_INT >= 26) { ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(VibrationEffect.createOneShot(150,10)); } else { ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(150); } }

Android支持库27,片段更新?

自从我将项目更新到SDK版本27并将支持库的gradle插件更新到版本27.0.0我需要更改我的代码。 使用26.1.0我可以在我的Fragment ( android.support.v4.app )中使用getContext() (使用Kotlin context )并且我没有可空性问题,但是因为我使用Kotlin我遇到了版本27.0.0的问题,我的所有context调用都不再起作用了,我需要一个安全操作符,就像context!!一样context!! ,但是因为我个人觉得每次我做自己的工作都是一种喧嚣 override fun getContext() = super.getContext()!! 改变的另一件事(突然,这就是我要问的原因)是onCreateView()和onViewCreated() 。 在onCreateView ,inflater不再是null,所以我需要更改我的函数签名以正确覆盖onCreateView(inflater: LayoutInflater?…)到onCreateView(inflater: LayoutInflater…)并且对于createdView参数也是createdView 。 onViewCreated 。 所以现在我想知道为什么,特别是(对于Kotlin)非常丑陋的getContext()更改已经完成并转向https://developer.android.com/sdk/support_api_diff/27.0.0/changes.html 。 但等等,显然他们没有改变它? 所以现在我的问题是,如果我做错了什么或者他们是否真的改变了它,如果是这样,我可能会问他们为什么? 顺便说一句,同样适用于getActivity() ,我认为添加了mHost == null检查, getActivity方法甚至是最终的,所以我不能在那里使用我的解决方法,这使得它非常难看。 实际上在源文件中方法看起来是一样的,但是26.1.0有Kotlin返回typesContext! 和27.0.0返回typesContext? 。

在Android Oreo 8.x中更改WiFi热点的SSID和密码

在我的Android应用程序中,我使用以下代码片段: @RequiresApi(api = Build.VERSION_CODES.O) private void turnOnHotspot(){ WifiManager manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); manager.startLocalOnlyHotspot(new WifiManager.LocalOnlyHotspotCallback(){ @Override public void onStarted(WifiManager.LocalOnlyHotspotReservation reservation) { super.onStarted(reservation); Log.d(TAG, “Wifi Hotspot is on now”); } @Override public void onStopped() { super.onStopped(); Log.d(TAG, “onStopped: “); } @Override public void onFailed(int reason) { super.onFailed(reason); Log.d(TAG, “onFailed: “); } },new Handler()); } 这段代码创建了一个名为“AndroidShare_1234”的热点。 对于我的项目,我需要能够为此热点设置密码和SSID,但是我找不到这样做的方法。 我想创建一个像MyHotspot这样的SSID和自定义密码的热点。 […]

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 无论是针对API级别25进行定位和编译,还是针对O进行编译(如下所示: https : //developer.android.com/preview/migration.html#uya ),startForeground方法似乎都没有问题。 所以,重现: 按照上一个链接中的说明配置app gradle 打开应用程序 请求位置更新 关闭应用程序(通过后退按钮或主页按钮) 服务正在前台运行(通知阴影中的图标显示)。 即使在运行O的设备上,位置更新也会按预期(每10秒)完成。我在这里缺少什么?

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

到目前为止,我已经调整了我的代码以使用ContextCompat.startForegroundService(context, intentService); 开始我的服务。 这样,它适用于android <26和android 26(Oreo)。 我仍然看到一个区别,在android oreo我没有看到我的自定义前景通知(我只看到“应用程序在后台运行”通知)。 我还需要调整任何东西吗? 我的服务看起来像这样: 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, […]

在Android 8.1 API 27上,通知不会显示

我在Android 8.1 API 27上获得了Toast: 程序包“my_package_name”的开发人员警告 无法在…上发布通知 Logcat包含下一个字符串: 通知:对于卷控制以外的操作,不推荐使用流types W / Notification:请参阅setSound()的文档,了解如何使用android.media.AudioAttributes来限定播放用例 E / NotificationService:找不到pkg = my_package_name的频道 Toast和Logcat中的完整信息可以帮助解决此问题。

具有boot_completed的运行时exceptionAndroid O.

我正在尝试在我的BOOT_COMPLETED接收器中启动IntentService,但在Android O(API 26)中,我得到: java.lang.RuntimeException: java.lang.IllegalStateException: Not allowed to start service Intent { act=intent.action.update cmp=packageName.services.OwnService }: app is in background (消息在一行中,但这样更易读) 我怎么能以正确的方式做到这一点?