[app] Added option to disable forced display of the application launcher icon on Android 10+ (#541)
* [core] Grant android.permission.WRITE_SECURE_SETTINGS * Disable jetifier * [app] Added option to disable forced display of the application launcher icon on Android 10+
This commit is contained in:
parent
0e66782101
commit
7139c3f11f
|
|
@ -26,6 +26,8 @@
|
|||
<uses-permission
|
||||
android:name="android.permission.INTERACT_ACROSS_USERS"
|
||||
tools:ignore="ProtectedPermissions" />
|
||||
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"
|
||||
tools:ignore="ProtectedPermissions" />
|
||||
|
||||
<queries>
|
||||
<intent>
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@
|
|||
package org.lsposed.manager.ui.activity;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
|
|
|
|||
|
|
@ -20,11 +20,15 @@
|
|||
|
||||
package org.lsposed.manager.ui.activity;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
|
|
@ -281,6 +285,16 @@ public class SettingsActivity extends BaseActivity {
|
|||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
SwitchPreference prefShowHiddenIcons = findPreference("show_hidden_icon_apps_enabled");
|
||||
if (prefShowHiddenIcons != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q
|
||||
&& requireActivity().checkSelfPermission(Manifest.permission.WRITE_SECURE_SETTINGS) == PackageManager.PERMISSION_GRANTED) {
|
||||
prefShowHiddenIcons.setVisible(true);
|
||||
prefShowHiddenIcons.setChecked(Settings.Global.getInt(
|
||||
requireActivity().getContentResolver(), "show_hidden_icon_apps_enabled", 1) != 0);
|
||||
prefShowHiddenIcons.setOnPreferenceChangeListener((preference, newValue) -> Settings.Global.putInt(requireActivity().getContentResolver(),
|
||||
"show_hidden_icon_apps_enabled", (boolean) newValue ? 1 : 0));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -152,6 +152,8 @@
|
|||
<string name="dns_over_http_summary">解决某些地区的 DNS 污染问题</string>
|
||||
<string name="theme_color">主题颜色</string>
|
||||
<string name="theme_color_summary">应用中最常见的颜色</string>
|
||||
<string name="settings_show_hidden_icon_apps_enabled">Android10+ 系统的强制显示应用桌面图标功能</string>
|
||||
<string name="settings_group_system">系统</string>
|
||||
|
||||
<!-- Module Repo -->
|
||||
<string name="module_readme">自述文件</string>
|
||||
|
|
|
|||
|
|
@ -152,6 +152,8 @@
|
|||
<string name="dns_over_http_summary">Workaround DNS poisoning in some nations</string>
|
||||
<string name="theme_color">Theme color</string>
|
||||
<string name="theme_color_summary">Color that appears most frequently in the app</string>
|
||||
<string name="settings_show_hidden_icon_apps_enabled">Forced display of the application launcher icon on Android 10+</string>
|
||||
<string name="settings_group_system">System</string>
|
||||
|
||||
<!-- Module Repo -->
|
||||
<string name="module_readme">Readme</string>
|
||||
|
|
|
|||
|
|
@ -18,10 +18,9 @@
|
|||
~ Copyright (C) 2021 LSPosed Contributors
|
||||
-->
|
||||
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<com.takisoft.preferencex.PreferenceCategory
|
||||
android:key="group_network"
|
||||
android:title="@string/group_network">
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<com.takisoft.preferencex.PreferenceCategory android:title="@string/group_network">
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
|
|
@ -53,9 +52,7 @@
|
|||
android:summary="@string/pure_black_dark_theme_summary" />
|
||||
</com.takisoft.preferencex.PreferenceCategory>
|
||||
|
||||
<com.takisoft.preferencex.PreferenceCategory
|
||||
android:key="group_framework"
|
||||
android:title="@string/settings_group_framework">
|
||||
<com.takisoft.preferencex.PreferenceCategory android:title="@string/settings_group_framework">
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
|
|
@ -73,7 +70,6 @@
|
|||
</com.takisoft.preferencex.PreferenceCategory>
|
||||
|
||||
<com.takisoft.preferencex.PreferenceCategory
|
||||
android:key="group_backup"
|
||||
android:title="@string/settings_backup_and_restore"
|
||||
android:summary="@string/settings_backup_and_restore_summery"
|
||||
android:icon="@drawable/ic_baseline_settings_backup_restore_24">
|
||||
|
|
@ -84,4 +80,14 @@
|
|||
android:key="restore"
|
||||
android:title="@string/settings_restore" />
|
||||
</com.takisoft.preferencex.PreferenceCategory>
|
||||
|
||||
<com.takisoft.preferencex.PreferenceCategory
|
||||
android:title="@string/settings_group_system">
|
||||
<SwitchPreference
|
||||
android:defaultValue="true"
|
||||
android:key="show_hidden_icon_apps_enabled"
|
||||
android:title="@string/settings_show_hidden_icon_apps_enabled"
|
||||
android:persistent="false"
|
||||
android:visible="false" />
|
||||
</com.takisoft.preferencex.PreferenceCategory>
|
||||
</PreferenceScreen>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ namespace lspd {
|
|||
extern void *sym_openInMemoryDexFilesNative;
|
||||
extern void *sym_createCookieWithArray;
|
||||
extern void *sym_createCookieWithDirectBuffer;
|
||||
extern void *sym_openInMemoryDexFilesNative;
|
||||
extern void *sym_openDexFileNative;
|
||||
extern void *sym_setTrusted;
|
||||
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ import java.nio.channels.FileChannel;
|
|||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
|
@ -62,6 +63,11 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||
// This config manager assume uid won't change when our service is off.
|
||||
// Otherwise, user should maintain it manually.
|
||||
public class ConfigManager {
|
||||
private static final String[] MANAGER_PERMISSIONS_TO_GRANT = new String[]{
|
||||
"android.permission.INTERACT_ACROSS_USERS",
|
||||
"android.permission.WRITE_SECURE_SETTINGS"
|
||||
};
|
||||
|
||||
static ConfigManager instance = null;
|
||||
|
||||
private static final File basePath = new File("/data/adb/lspd");
|
||||
|
|
@ -618,11 +624,14 @@ public class ConfigManager {
|
|||
}
|
||||
|
||||
public static void grantManagerPermission() {
|
||||
String managerPackageName = readText(managerPath, BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME);
|
||||
Arrays.stream(MANAGER_PERMISSIONS_TO_GRANT).forEach(permission -> {
|
||||
try {
|
||||
PackageService.grantRuntimePermission(readText(managerPath, BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME), "android.permission.INTERACT_ACROSS_USERS", 0);
|
||||
PackageService.grantRuntimePermission(managerPackageName, permission, 0);
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, Log.getStackTraceString(e));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public boolean isModule(int uid) {
|
||||
|
|
|
|||
|
|
@ -12,5 +12,4 @@
|
|||
# org.gradle.parallel=true
|
||||
#Sat Jan 30 19:20:27 CST 202130.0.322.0.7026061
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
android.enableResourceOptimizations=false
|
||||
|
|
|
|||
Loading…
Reference in New Issue