Articles of android o

为什么Android O失败并且“不属于这个FragmentManager!”

我已将我的应用程序迁移到Android Studio 3中的Android O. 在Android O模拟器上运行我的所有dialogFragments现在都失败了: – java.lang.IllegalStateException: Fragment MyDialogFragment{43ccf50 #2 MyDialogFragment} declared target fragment SettingsFragment{ceed549 #0 id=0x7f0f0142 android:switcher:2131689794:0} that does not belong to this FragmentManager! at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1316) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1624) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1689) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2470) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2260) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2213) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2122) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:746) at android.os.Handler.handleCallback(Handler.java:769) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6535) at java.lang.reflect.Method.invoke(Native Method) […]

TextView的自动调整function不起作用(Android O)

我在支持库26中添加了新的自动调整function。我阅读了一个文档,可以在这里find: https : //developer.android.com/preview/features/autosizing-textview.html 我认为它应该以这种方式工作:您可以使用以下属性启用自动resize: app:autoSizeTextType=”uniform” 。 我认为TextView应该使用所有可用空间来显示整个文本(不仅仅是一个部分 – 它不应该被裁剪)并且textSize应该尽可能大。 如果您需要限制文本的最大或最小大小,则可以使用以下两个属性: app:autoSizeMinTextSize=”XXsp” // (you can also use px or dp values.) 要么 app:autoSizeMaxTextSize=”XXsp” 到现在为止还挺好。 假设我需要一个宽度为56dp的TextView。 我有不同长度的文本,我想将这些文本设置为此TextView 。 它应该自动resize,以便在最大可能的textSize显示整个文本(所有字符+未裁剪)。 这是我的TextView: 不幸的是,文本视图被裁剪。 我想将此String作为文本设置为上面的TextView:“Groupa”,但这是结果: (TextView位于ConstraintLayout内部,带有黄色圆圈背景。) 如您所见,textview根本没有resize。 你知道该怎么办吗? 谢谢。

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

到目前为止,我已经修改了我的代码来使用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); 有没有比这更好的方法?