Add option to create settings shortcut in secret menu

This commit is contained in:
paphonb
2018-05-20 11:13:30 +07:00
parent 248ebea01f
commit cdff2c49b6
5 changed files with 28 additions and 4 deletions

View File

@@ -67,6 +67,7 @@
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
<uses-permission android:name="android.permission.INSTALL_SHORTCUT"/>
<application
android:backupAgent=".LauncherBackupAgent"

View File

@@ -452,4 +452,5 @@
<string name="summary_all_apps_google_search">Show Google Search instead of normal apps search</string>
<string name="num_hotseat_icons_pref_title">Number of icons in dock</string>
<string name="icon_scale_pref_title">Icon scale</string>
<string name="add_settings_shortcut_title">Add settings shortcut to home screen</string>
</resources>

View File

@@ -11,4 +11,9 @@
android:title="@string/show_debug_info_pref_title"
android:defaultValue="false"
android:persistent="true" />
<Preference
android:key="addSettingsShortcut"
android:title="@string/add_settings_shortcut_title"
android:defaultValue="false"/>
</PreferenceScreen>

View File

@@ -27,10 +27,10 @@ import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.*;
import android.support.v4.content.pm.ShortcutInfoCompat;
import android.support.v4.content.pm.ShortcutManagerCompat;
import android.support.v4.graphics.drawable.IconCompat;
import android.support.v7.preference.ListPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceFragmentCompat;
@@ -306,6 +306,7 @@ public class SettingsActivity extends SettingsBaseActivity implements Preference
findPreference(SHOW_PREDICTIONS_PREF).setOnPreferenceChangeListener(this);
} else if (getContent() == R.xml.lawnchair_dev_options_preference) {
findPreference("kill").setOnPreferenceClickListener(this);
findPreference("addSettingsShortcut").setOnPreferenceClickListener(this);
}
}
@@ -437,6 +438,8 @@ public class SettingsActivity extends SettingsBaseActivity implements Preference
return true;
} else if ("kill".equals(preference.getKey())) {
Utilities.killLauncher();
} else if ("addSettingsShortcut".equals(preference.getKey())) {
Utilities.pinSettingsShortcut(getActivity());
}
return false;
}

View File

@@ -34,6 +34,9 @@ import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.*;
import android.support.annotation.NonNull;
import android.support.v4.content.pm.ShortcutInfoCompat;
import android.support.v4.content.pm.ShortcutManagerCompat;
import android.support.v4.graphics.drawable.IconCompat;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
@@ -47,6 +50,7 @@ import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import ch.deletescape.lawnchair.LawnchairPreferences;
import ch.deletescape.lawnchair.backup.RestoreBackupActivity;
import ch.deletescape.lawnchair.settings.ui.SettingsActivity;
import com.android.launcher3.config.FeatureFlags;
import java.io.ByteArrayOutputStream;
@@ -757,4 +761,14 @@ public final class Utilities {
public static String upperCaseFirstLetter(String str) {
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
public static void pinSettingsShortcut(Context context) {
if (!ShortcutManagerCompat.isRequestPinShortcutSupported(context)) return;
ShortcutManagerCompat.requestPinShortcut(context, new ShortcutInfoCompat.Builder(context, "settings")
.setIntent(new Intent(context, SettingsActivity.class).setAction(Intent.ACTION_MAIN))
.setIcon(IconCompat.createWithResource(context, R.drawable.ic_setting))
.setShortLabel(context.getString(R.string.settings_button_text))
.setAlwaysBadged()
.build(), null);
}
}