我想使用我的应用程序切换手机的分辨率和密度(不想使用 ADB)。
- 当我使用
Runtime.getRuntime().exec("wm density 220")
它时,它不适用于 AVD,也不适用于带有自定义 ROM 的根深蒂固的手机 Galaxy S8。 - 当我使用
Runtime.getRuntime().exec("wm size 1080x1920")
它时,它会更改我的 Galaxy S8 上的分辨率,但不会更改 AVD 上的分辨率。
我授予android.permission.WRITE_SECURE_SETTINGS
我所有的设备。
我已经尝试过的:
- 通过授予超级用户权限
(Runtime.getRuntime().exec("su")
,我仍然无法使用我的应用更改密度 - 我可以在任何设备上使用 adb 命令更改密度和大小(分辨率)
- 我可以使用应用程序 Tasker 更改大小(分辨率)(此应用程序具有 android.permission.WRITE_SECURE_SETTINGS),但无法更改密度。Tasker 中的更改密度只能使用 root 进行。
- 应用程序第二屏幕(也有 android.permission.WRITE_SECURE_SETTINGS 并且可以在 Github 上下载源代码)可以更改我的 AVD 和我的 Galaxy S8 上的分辨率和密度,而无需 ROOT
- 使用应用程序终端仿真器,我只能使用 ROOT 更改大小和密度
- 应用程序第二个屏幕,也在这个网站上提到:http: //nomone.com/2016/10/11/modifying-android-system-settings/ 使用代码“Settings.Global.putString”这应该可以解决我的问题,但是我不知道如何使用它。请你帮助我好吗?
//Part of the code used from http://nomone.com/ and is also used in app
//Second Screen, there they don't use Runtime.getRuntime.exec("...")
Settings.Global.putString(
mContext.getContentResolver(),
Settings.Global.DISPLAY_SIZE_FORCED, width + "," + height);
//this is part of the code with Runtime.getRuntime
Process process = Runtime.getRuntime().exec("wm density 220");
process.waitFor();