天道酬勤,学无止境

android-8.0-oreo

java.io.FileNotFoundException: No such file or directory Error

I am downloading images to smartphone. For older versions not problem my code is working but for Oreo it is not working. I tried this code in Emulator. I implemented a function to save image to external storage. private void saveImageToExternalStorage(Bitmap finalBitmap,String name) { String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString(); File myDir = new File(root + "/xx"); myDir.mkdirs(); String fname = name + ".jpg"; File file = new File(myDir, fname); if (file.exists()) file.delete(); try { FileOutputStream out = new FileOutputStream(file)

2021-10-25 17:07:18    分类:问答    java   android   android-permissions   android-8.0-oreo   android-external-storage

数据未显示在 Android Pie 9.0 上(Data not showing on Android Pie 9.0)

问题 在我将手机从 Android Oreo 8.0 更新到 Android Pie 9.0 后,我无法再使用 HttpUrlConnection 从 MySQL 数据库获取数据。 我尝试使用模拟器 Android Oreo 8.0 并显示数据。 但是,当我尝试使用模拟器 Android Pie 9.0 时,没有显示数据。 请帮我。 回答1 我最近在 Android 9 上遇到了同样的问题,但我不得不为不同的屏幕使用一些 URL。 所以我将 android:usesCleartextTraffic="true" 添加到 Manifest 并且它起作用了,但我们不想为此损害整个应用程序的安全性。 因此,解决方法是将链接从 HTTP 更改为 https。但是如果您必须仅使用 http 与您的应用程序通信,那么这就是您的解决方案。 android:networkSecurityConfig="@xml/security_config" 在 Xml 中添加这个 <network-security-config> <base-config cleartextTrafficPermitted="true"/> <debug-overrides> <trust-anchors> <certificates src="system" /> <certificates src="user" /> <

2021-10-24 15:26:47    分类:技术分享    android   httpurlconnection   android-8.0-oreo   android-9.0-pie   android-8.1-oreo

调用活动 onStart 时,应用程序似乎在后台(App seems to be in background when activity onStart is called)

问题 由于 Android Oreo,当应用程序不在前台时,您无法启动服务。 在我的应用程序中,我在活动的 onStart 方法中启动了一项服务。 这在大多数情况下都非常有效。 但是,有时会抛出 IllegalStateException 异常,表示应用程序正在尝试在后台启动服务: java.lang.IllegalStateException: Not allowed to start service Intent { act=ui cmp=com.someapp/.services.ConnectionService }: app is in background uid UidRecord{8d70361 u0a255 TPSL bg:+3m12s948ms idle change:cached procs:1 proclist:20368, seq(0,0,0)} at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1666) at android.app.ContextImpl.startService(ContextImpl.java:1611) at android.content.ContextWrapper.startService(ContextWrapper.java:677) at

2021-10-24 14:26:21    分类:技术分享    android   samsung-mobile   android-8.0-oreo

适用于 MediaPlayer 的 Native Crash tgkill+8 (Samsung Oreo 8.0)(Native Crash tgkill+8 for MediaPlayer (Samsung Oreo 8.0))

问题 我们看到所有类型的带有 Android Oreo 8.0 的三星设备都发生了奇怪的tgkill本机崩溃。 #00 pc 000000000006b818 /system/lib64/libc.so (tgkill+8) #01 pc 000000000001df10 /system/lib64/libc.so (abort+88) #02 pc 0000000000007f44 /system/lib64/liblog.so (__android_log_assert+304) #03 pc 0000000000015a94 /system/lib64/libutils.so (_ZN7android6Looper4wakeEv+192) #04 pc 0000000000695368 /system/framework/arm64/boot-framework.oat (android.os.Binder.restoreCallingIdentity [DEDUPED]+152) #05 pc 00000000010b04b4 /system/framework/arm64/boot-framework.oat (android.os.MessageQueue.quit+276) #06 pc 00000000010aaff4 /system/framework/arm64

2021-10-24 00:28:05    分类:技术分享    android   android-ndk   android-mediaplayer   android-8.0-oreo

从 Pie 到 Nougat 和 Oreo 的兼容性问题(Compatibility Issues from Pie to Nougat and Oreo)

问题 我最初使用 Pie sdk 创建了一个应用程序并且它可以在 Pie 设备上运行 现在我希望它也可以在 Nougat 和 Oreo 上运行 怎么做 我在将 sdk 版本更改为 26 后附加了日志以及应用程序级别的 Gradle 应用程序级别 apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 26 defaultConfig { applicationId "com.divyateja.waviour" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } buildTypes { release { minifyEnabled false

2021-10-23 22:14:20    分类:技术分享    java   android   logcat   android-8.0-oreo

奥利奥:如何从后台捕捉位置更新?(Oreo: how to catch location update from the background?)

问题 我将我的应用程序迁移到奥利奥(因为它现在被 google play 所要求),现在我在启动手机时出现错误: 不允许启动服务 Intent 我的应用程序正在后台侦听任何位置更新,并定期将那些抓取的位置发送到服务器。 为此,我这样做: 在AndroidManifest.xml <receiver android:name="com.myapp.StartServiceBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 在 StartServiceBroadcastReceiver 我做: @Override public void onReceive(Context context, Intent intent) { try { /* start the location service */ Intent startServiceIntent = new Intent(context, LocationService.class); context.startService(startServiceIntent); } catch (Throwable e){ Log.e

2021-10-23 19:16:44    分类:技术分享    android   android-service   android-location   android-8.0-oreo   android-fusedlocation

在 Android 8 (Oreo) Intent Chooser 中无法设置 WallPaper(In Android 8 (Oreo) Intent Chooser is not working to set WallPaper)

问题 我正在使用以下代码片段来设置壁纸。 在低于 Android 8 (Oreo) 的所有版本中,它会显示一个选择器来选择锁定屏幕或主屏幕或两者等。但在 Android 8 中,它直接在主屏幕上设置壁纸而无需任何确认。 Oreo 中是否有任何更新或代码有问题? Uri sendUri2 = Uri.fromFile(externalFile); Intent intent1 = new Intent(Intent.ACTION_ATTACH_DATA); intent1.setDataAndType(sendUri2,type); intent1.putExtra("mimeType",type); intent1.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); startActivityForResult(Intent.createChooser(intent1, "Set As"), 200); 回答1 try { Intent intent = new Intent(); intent.setAction(Intent.ACTION_ATTACH_DATA); File file = new File(path_of_file); intent.addFlags(Intent.FLAG_GRANT_READ_URI

2021-10-23 13:22:10    分类:技术分享    android   android-intent   android-8.0-oreo   android-wallpaper

不推荐使用默认构造函数时如何调用父类的构造函数(How to call constructor of parent class when the default constructor is deprecated)

问题 我有一个名为 BaseKeyListener 的类,它扩展了 android.text.method.DigitsKeyListener。 我没有在 BaseKeyListener 类中定义构造函数,所以调用了父默认构造函数。 从 api 级别 26 开始,不推荐使用 DigitsKeyListener 的默认构造函数。 为了仍然支持较低的 Android 版本,我必须向 BaseKeyListener 添加一个构造函数,该构造函数有条件地调用父级的构造函数。 然而,这会导致另一个错误。 public static abstract class BaseKeyListener extends DigitsKeyListener { public BaseKeyListener() { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // api level 26 constructor super(null); } else { // api level 1 constructor (deprecated) super(); } } } 我现在得到的错误: 调用“super()”必须是构造函数体中的第一条语句 我尝试了一个速记 if 语句,但这也没有成功。 还有另一个 api 1 级构造函数,但不幸的是它也被弃用了。

2021-10-23 11:37:39    分类:技术分享    java   android   constructor   deprecated   android-8.0-oreo

通知渠道错误(Notification channel error)

问题 我有一个应用程序可以接收 FCM 通知。应用程序在 Android oreo 设备下方的操作系统上收到通知。 但是通知没有在 android oreo 设备中收到。它得到的不是通知,而是“开发人员警告包未能在通道 null 上发布通知”。 我搜索了一下,了解到需要通知通道。但是我不知道要添加到哪里。请给我指导。8.0 模拟器上出现toast。在真实设备中什么也没有。 回答1 更新: 通知通道是在 Android 8 中引入的。在 Application 类中创建通道并分配给通知管理器是很常见的。 示例代码取自 Google Android。 以下是步骤 第 1 步。 添加一个类来扩展应用程序并在这个类中创建频道 ID,如下所示。 com.sample.app.Application.java public class AppApplication extends Application{ public static final String CAHNNEL_ID = "default_channel_id"; @Override public void onCreate() { super.onCreate(); createNotificationChannel() } private void createNotificationChannel() { // Create

2021-10-23 11:31:35    分类:技术分享    android   firebase-cloud-messaging   android-notifications   android-8.0-oreo   notification-channel

Oreo - Widget 服务和广播接收器:不允许启动服务 Intent(Oreo - Widget services and broadcast receiver: Not allowed to start service Intent)

问题 我有一个监控 wifi 连接的小部件,所以我启动了一个服务来启动一个广播接收器来检测网络变化。 一切正常,除非我退出主应用程序:服务停止。 所以我在小部件中启动了一个警报管理器,它大约每分钟唤醒一次并检查主应用程序是否已退出。 如果是这种情况,我尝试重新启动我的 wifi 监控服务,这次它崩溃并显示以下消息: 不允许启动服务 Intent { cmp= package .CallbackNetworkWidgetService (has extras) }: app is in background uid UidRecord{f6e65b9 u0a154 RCVR idle change:idle|uncached procs:1 seq(0,0,0)} 问题在于奥利奥新的意图/服务模型。 它一直工作到牛轧糖。 问题: 我的方法正确吗? 我对前台/后台服务的概念有点迷茫。 小部件是一个背景 svce? wifi监控服务/BR也是后台服务? 这里有什么问题? 显现: <receiver android:name=".Widget.TestWidget"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <intent

2021-10-23 10:09:17    分类:技术分享    android   android-intent   service   broadcastreceiver   android-8.0-oreo