天道酬勤,学无止境

android-7.0-nougat

Default Device assistance app Android

问题 可悲的是,现在我们不能再将我们的应用程序映射到长按主页按钮事件。 但是,有一个设置页面可以更改默认设备协助应用程序:三星上的默认设备协助应用程序 是否有可能以编程方式更改默认设备辅助应用程序,甚至启动设置页面(通过意图)以使用户更改设置? 回答1 是否有可能以编程方式更改默认设备辅助应用程序 幸运的是,不,出于明显的隐私和安全原因。 甚至启动设置页面(通过意图)以使用户更改设置? 理想情况下,“设置”中会有一个针对此的操作,但我没有看到一个看起来像是特定于助手的操作。

2022-05-17 01:25:05    分类:技术分享    android   android-intent   android-7.0-nougat   android-settings   google-voice

Difference between AOT and JIT compiler in the ART

问题 在 Marshmallow 中添加了一个带有 ART 的 AOT 编译器。 从 Android N 开始,除了 AOT 之外,还添加了另一个编译器 JIT。 什么是 AOT 编译器特定的工作/功能,什么是 JIT 编译器的工作/功能? 回答1 在 Android 中将 Java 类转换为 DEX 字节码。 DEX 字节码格式通过 ART 或 Dalvik 运行时转换为本机机器码。 Dalvik 是一个基于 JIT(即时)编译的引擎。 使用 Dalvik 有一些缺点,因此从 Android 4.4 (kitkat) 开始,ART 作为运行时引入,而从 Android 5.0 (Lollipop) 开始,它已经完全取代了 Dalvik。 Android 7.0 在 Android 运行时 (ART) 中添加了带有代码分析功能的即时 (JIT) 编译器,可在 Android 应用程序运行时不断提高它们的性能。 ( Dalvik 使用 JIT(即时)编译,而 ART 使用 AOT(提前)编译。 ) 准时 (JIT): 使用 Dalvik JIT 编译器,每次运行应用程序时,它都会将 Dalvik 字节码的一部分动态转换为机器码。 随着执行的进行,更多的字节码被编译和缓存。 由于 JIT 只编译部分代码,因此它的内存占用更小,在设备上使用的物理空间也更少。 提前(AOT): ART

2022-05-15 10:57:17    分类:技术分享    android   android-6.0-marshmallow   jit   android-7.0-nougat

After dismissing the alert appium is no longer detecting any element on the screen

问题 基本上一切正常,直到屏幕上显示通知。 在我关闭警报后,appium 不再检测我的任何按钮、字段等。唯一有效的方法是我将应用程序置于后台并恢复它。 恢复后一切正常。 (我正在使用 Appium 1.6.4,Android 7.0)。 这里有什么提示吗? 回答1 这是 appium 项目中的已知问题。 我使用的解决方法: 在打开对话框之前获取屏幕上任何元素的坐标 (x, y) 与对话框交互(例如选择元素、关闭等) 关闭对话框后按坐标(x,y)点击: new TouchAction(driver).tap(x, y).perform(); 只有通过坐标点击屏幕后,它才会找到元素。 回答2 此问题的另一个解决方法是 - 您可以将应用程序置于后台并再次启动。 driver.runAppInBackground(5); 回答3 adb -s yourDeviceSerialNumber shell pm grant your.app.packagename android.permission.READ_EXTERNAL_STORAGE adb -s yourDeviceSerialNumber shell pm grant your.app.packagename android.permission.WRITE_EXTERNAL_STORAGE adb -s

2022-05-02 13:50:49    分类:技术分享    appium   android-7.0-nougat

Default Device assistance app Android

Sadly, now we can no more map our apps to Long press home button Event. But, There is a settings page where it is possible to change the default device assistance app: Default Device Assistance app on Samsung Is it anyway possible to change the default device assistance app programmatically or even launch the settings page (via intent) to make the user change the setting?

2022-05-02 02:48:14    分类:问答    android   android-intent   android-7.0-nougat   android-settings   google-voice

android.os.FileUriExposedException: file:///storage/emulated/0/test.txt exposed beyond app through Intent.getData()

The app is crashing when I'm trying to open a file. It works below Android Nougat, but on Android Nougat it crashes. It only crashes when I try to open a file from the SD card, not from the system partition. Some permission problem? Sample code: File file = new File("/storage/emulated/0/test.txt"); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "text/*"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); // Crashes on this line Log: android.os.FileUriExposedException: file:///storage/emulated/0/test.txt exposed beyond app through

2022-05-01 22:56:24    分类:问答    android   android-file   android-7.0-nougat

android 7.0 Notification icon appearing white square

问题 我正在使用下面的代码片段在我的 android 应用程序中生成通知。 private void sendNotification(String contentText, String message) { Intent resultIntent = new Intent(this, MainActivity.class); resultIntent.putExtra("clear","clear"); resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); PendingIntent piResult = PendingIntent.getActivity(this, 0, resultIntent,0); NotificationCompat.Builder builder=new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.icon) .setColor(ContextCompat.getColor(getApplicationContext(),R.color.red)) .setContentTitle("title") .setContentText(message)

2022-05-01 05:41:14    分类:技术分享    android   android-notifications   android-7.0-nougat

FileUriExposedException using Android 7 [duplicate]

This question already has answers here: android.os.FileUriExposedException: file:///storage/emulated/0/test.txt exposed beyond app through Intent.getData() (28 answers) Closed 2 years ago. When I try to capture a picture I have this error : FATAL EXCEPTION: main android.os.FileUriExposedException: file:///storage/emulated/0/fname_1498727381241.jpg exposed beyond app through ClipData.Item.getUri() at android.os.StrictMode.onFileUriExposed(StrictMode.java:1799) at android.net.Uri.checkFileUriExposed(Uri.java:2346) at android.content.ClipData.prepareToLeaveProcess(ClipData.java:835) at android

2022-04-30 03:26:06    分类:问答    android   android-7.0-nougat

Difference between AOT and JIT compiler in the ART

In Marshmallow there was an AOT compiler added with ART. From Android N another compiler JIT was added in addition with AOT. What are AOT compiler specific job/features and what areJIT compiler job/features?

2022-04-29 04:02:35    分类:问答    android   android-6.0-marshmallow   jit   android-7.0-nougat

Android 7 GraphicBuffer alternative for direct access to OpenGL texture memory

问题 从移动设备为 CPU 和 GPU 共享内存这一事实中获利的唯一方法是使用GrphicBuffer 。 但由于 Android 7 限制了对私有原生库(包括 gralloc)的访问,因此无法再使用它。 问题 - 有没有其他方法可以直接访问纹理的像素数据? 我知道,可以使用 PBO(像素缓冲区对象)完成类似的操作。 但它仍然会进行额外的内存复制,这是不可取的。 特别是如果我们知道,有办法用零拷贝来做到这一点。 有许多应用程序使用了此功能,因为它可以大大提高性能。 我认为许多开发人员现在都陷入了这个问题。 回答1 从 Android 8 / API 26 开始(对不起,不适用于 Android 7...) 硬件缓冲区 API 是GrphicBuffer()的替代品。 本机硬件缓冲区 API 允许您直接分配缓冲区以创建自己的管道以进行跨进程缓冲区管理。 您可以分配一个 AHardwareBuffer 并使用它通过 eglGetNativeClientBufferANDROID 扩展获取 EGLClientBuffer 资源类型。 NDK 修订历史 NDK 的最低修订版为 15c(2017 年 7 月) Android NDK,修订版 15c(2017 年 7 月) 为 Android 8.0 添加了原生 API。 * 硬件缓冲区 API android/hardware_buffer

2022-04-28 09:45:30    分类:技术分享    android   performance   opengl-es   android-ndk   android-7.0-nougat

TelephonyManager's PhoneStateListener is not called on Nougat

问题 我制作了一个示例应用程序和 PhoneStateListener TelephonyManager telephony = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); //TelephonyManager object telephony.listen(new PhoneStateListener() { @Override public void onCallStateChanged(int state, String incomingNumber) { Log.i("brian", "call state = " + state + " incoming number " + incomingNumber); switch (state) { case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_RINGING: break; case TelephonyManager.CALL_STATE_OFFHOOK: break; } } }, PhoneStateListener.LISTEN_CALL_STATE); //Register our listener with

2022-04-28 03:06:44    分类:技术分享    android   telephonymanager   android-7.0-nougat