问题标签 [android-9.0-pie]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 使用 NETWORK_SETTINGS 权限防止 Android 9 (Pie) 上的 wifi 扫描限制
正如一些人所指出的那样,Android 9 (Pie) 严格限制了 wifi 扫描,从而削弱了任何执行 wifi 记录或基于 wifi 的位置查找的应用程序,其频率类似于 GPS。
如上面链接的票中所述:
- 每个前台应用程序限制为每 2 分钟扫描 4 次
- 所有后台应用程序组合限制为每 30 分钟扫描一次
- 持有
android.Manifest.permission.NETWORK_SETTINGS
权限的应用程序不受扫描限制(参见docs)
但是,我在文档中的任何地方都没有找到android.Manifest.permission.NETWORK_SETTINGS
描述(我希望它记录在android.manifest.permission中)。
如果我只是在清单中声明,应用程序构建正常,安装正常,但我看不到任何额外的权限(即使我选择显示全部),至少在 Oreo 上(不幸的是我没有要测试的 Pie 设备还在)。
android.Manifest.permission.NETWORK_SETTINGS
常规用户(即非系统)应用程序是否可以使用常规权限?
java - Android(9)Pie中如何允许所有网络连接类型HTTP和HTTPS?
从现在的 Android 9 Pie 开始,没有加密的请求将永远无法工作。默认情况下,系统会期望您默认使用 TLS。您可以在此处阅读此功能因此,如果您只通过 HTTPS 发出请求,那么您是安全的。但是,通过不同站点发出请求的应用程序呢,例如类似浏览器的应用程序。
如何在 Android 9 Pie 中启用对所有类型连接 HTTP 和 HTTPS 的请求?
android - 在 Android 9 (Android Pie) 中从输入法服务显示对话框
我的应用程序包含一个带有特殊按钮的输入法服务,该按钮会弹出一个对话框。对于使用 Android 9 的用户,此对话框无法正确显示,只有 IME 上方的部分可见:
创建对话框的代码是
这与https://stackoverflow.com/a/13962770/292233中的描述相同
我也按照https://stackoverflow.com/a/3508462/292233TYPE_APPLICATION_PANEL
中的建议进行了尝试,但这也无济于事。
有什么简单的解决方法吗?
database - 无法在 Android Pie (Android 9) 中打开数据库
我使用 checkDataBase 函数来确保数据库是否已经存在,以避免每次在 Oreo 中打开应用程序时重新复制文件。但在 Android Pie 中它不起作用。
收到此错误:os_unix.c:36667: (2) open(/data/data/my.androidPieTrial.app/databases/admin.db) android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14 SQLITE_CANTOPEN): could not开放数据库
android - Android 9中wifi RTT范围的正确使用
Android 9 (Pie) 引入了wifi RTT 测距,用于基于 wifi 的地理定位。
在 Android 8 (Oreo) 之前的版本中,应用程序会定期请求 wifi 扫描。此功能在 Android 9 中受到严重限制:前台应用程序现在可以在 2 分钟的窗口内请求最多 4 次扫描;后台应用程序被限制为每 30 分钟一次扫描所有后台应用程序的组合。避免这种限制的唯一方法是NETWORK_SETTINGS
权限,但是,它是签名权限(我认为这意味着它需要使用与操作系统构建相同的密钥进行签名,无论它是否是系统应用程序),因此不是可用于第三方应用程序。
我知道 wifi RTT 测距只能用 启动ScanResult
,因此我需要先运行 wifi 扫描。但是,我大概可以通过对几个 RTT 测距请求重复使用相同的扫描结果来绕过油门,但代价是一段时间内没有获得新的 wifi。
但是,文档还提到了 wifi RTT 范围的限制,但是没有具体说明限制是什么。
最后,WifiManager.startScan()
已弃用,应用程序可能无法在未来版本中开始扫描。
问题:
- 请求 wifi RTT 测距的限制是什么?
- 获取
ScanResult
我需要启动 RTT 测距请求的正确方法是什么?
java - Android API 28 更新后,出现:合并 dex 档案时出错
我正在尝试将我的 Android 应用程序移至 API 28 (Android 9/P)
我遇到了 5 个无法修复的错误。我对 Android 开发还比较陌生,我认为,我可能没有最好的更新方法。
我已经尝试清理和重建,但问题仍然存在。
这是我的项目gradle:
这是我的应用程序gradle:
我收到 5 个错误:
1- 程序类型已经存在:android.support.customtabs.ICustomTabsCallback
2-引起:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:合并dex档案时出错:
3- 原因:com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错:
4-引起:com.android.tools.r8.CompilationFailedException:编译未能完成
5- 引起:com.android.tools.r8.utils.AbortException
我一直在努力寻找有关此事的文件。任何建议或文档链接将不胜感激。
android - Android Studio 3.1.4 设计预览不渲染材料设计元素
我正在使用 Android Studio 3.1.4。为了使用最新的材料设计库,我将编译和目标 SDK 版本更新为 28。现在,我在基本线性布局中使用一些 TextInputLayouts 和 TextInputEditTexts,并且设计预览无法正确呈现它们。它也不会渲染任何正确跟随它的元素。我在设计预览中收到以下错误:
java.lang.IllegalArgumentException:restoreToCount 中的下溢 - 在 android.support.design.widget.CutoutDrawable.postDraw(CutoutDrawable.java:113) 在 android.graphics.Canvas.restoreToCount(Canvas.java:604) 在 android .support.design.widget.CutoutDrawable.draw(CutoutDrawable.java:87) 在 android.support.design.widget.TextInputLayout.draw(TextInputLayout.java:1575)
这是预览的实际外观 - 对设计没有特别帮助:
我一直在寻找解决此问题的方法,但似乎找不到任何对当前版本的 Android Studio 或 SDK 28 有用的东西。这是应用程序 build.gradle 文件:
候选发布库之一是否可能存在问题?
android - 在 Android Pie (API-28) 中进入活动时键盘不显示
我想在进入电子邮件登录屏幕时弹出设备键盘。
我在AndroidManifest.xml文件中声明了windowSoftInputMode
to :"stateVisible"
我已遵循此文档。
结果:
在最多运行 27 个 Android API 的设备上,会显示键盘。
在运行 Android API 28 的设备上,未显示键盘。
它是 Android Pie 中的错误吗?
有什么建议吗?