Update shortcut when resume MainActivity (#2285)
This commit is contained in:
parent
afa1eb0bf9
commit
47a991db8b
|
|
@ -164,7 +164,7 @@ public class ScopeAdapter extends EmptyStateRecyclerView.EmptyStateAdapter<Scope
|
|||
return new ViewHolder(ItemModuleBinding.inflate(activity.getLayoutInflater(), parent, false));
|
||||
}
|
||||
|
||||
private boolean shouldHideApp(PackageInfo info, ApplicationWithEquals app, HashSet<ScopeAdapter.ApplicationWithEquals> tmpChkList) {
|
||||
private boolean shouldHideApp(PackageInfo info, ApplicationWithEquals app, HashSet<ApplicationWithEquals> tmpChkList) {
|
||||
if (info.packageName.equals("android")) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,13 +23,13 @@ import android.annotation.SuppressLint;
|
|||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.os.BuildCompat;
|
||||
import androidx.navigation.NavController;
|
||||
import androidx.navigation.NavOptions;
|
||||
import androidx.navigation.Navigation;
|
||||
|
|
@ -45,6 +45,7 @@ import org.lsposed.manager.databinding.ActivityMainBinding;
|
|||
import org.lsposed.manager.repo.RepoLoader;
|
||||
import org.lsposed.manager.ui.activity.base.BaseActivity;
|
||||
import org.lsposed.manager.util.ModuleUtil;
|
||||
import org.lsposed.manager.util.ShortcutUtil;
|
||||
import org.lsposed.manager.util.UpdateUtil;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
|
@ -153,7 +154,7 @@ public class MainActivity extends BaseActivity implements RepoLoader.RepoListene
|
|||
}
|
||||
|
||||
public void restart() {
|
||||
if (BuildCompat.isAtLeastS() || App.isParasitic()) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S || App.isParasitic()) {
|
||||
recreate();
|
||||
} else {
|
||||
try {
|
||||
|
|
@ -262,6 +263,9 @@ public class MainActivity extends BaseActivity implements RepoLoader.RepoListene
|
|||
}
|
||||
}
|
||||
}
|
||||
if(App.isParasitic()){
|
||||
ShortcutUtil.updateShortcut();
|
||||
}
|
||||
}
|
||||
|
||||
private void setModulesSummary(int moduleCount) {
|
||||
|
|
|
|||
|
|
@ -17,19 +17,24 @@ public class WelcomeDialog extends DialogFragment {
|
|||
private static boolean shown = false;
|
||||
|
||||
private Dialog parasiticDialog(BlurBehindDialogBuilder builder) {
|
||||
return builder
|
||||
var shortcutSupported = ShortcutUtil.isRequestPinShortcutSupported(requireContext());
|
||||
builder
|
||||
.setTitle(R.string.parasitic_welcome)
|
||||
.setMessage(R.string.parasitic_welcome_summary)
|
||||
.setMessage(shortcutSupported ? R.string.parasitic_welcome_summary :
|
||||
R.string.parasitic_welcome_summary_no_shortcut_support)
|
||||
.setNegativeButton(R.string.never_show, (dialog, which) ->
|
||||
App.getPreferences().edit().putBoolean("never_show_welcome", true).apply())
|
||||
.setNeutralButton(R.string.create_shortcut, (dialog, which) ->
|
||||
.setPositiveButton(android.R.string.ok, null);
|
||||
if (shortcutSupported)
|
||||
builder.setNeutralButton(R.string.create_shortcut, (dialog, which) ->
|
||||
ShortcutUtil.requestPinLaunchShortcut(() ->
|
||||
App.getPreferences().edit().putBoolean("never_show_welcome", true).apply()))
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.create();
|
||||
App.getPreferences().edit().putBoolean("never_show_welcome",
|
||||
true).apply()));
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
private Dialog appDialog(BlurBehindDialogBuilder builder) {
|
||||
|
||||
return builder
|
||||
.setTitle(R.string.app_welcome)
|
||||
.setMessage(R.string.app_welcome_summary)
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ public class SettingsFragment extends BaseFragment {
|
|||
|
||||
Preference shortcut = findPreference("add_shortcut");
|
||||
if (shortcut != null) {
|
||||
shortcut.setVisible(App.isParasitic());
|
||||
shortcut.setVisible(App.isParasitic() && ShortcutUtil.isRequestPinShortcutSupported(requireContext()));
|
||||
if (ShortcutUtil.isLaunchShortcutPinned()) {
|
||||
shortcut.setEnabled(false);
|
||||
shortcut.setSummary(R.string.settings_created_shortcut_summary);
|
||||
|
|
|
|||
|
|
@ -19,10 +19,13 @@ import android.graphics.drawable.Drawable;
|
|||
import android.graphics.drawable.Icon;
|
||||
import android.graphics.drawable.LayerDrawable;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
|
||||
import org.lsposed.manager.App;
|
||||
import org.lsposed.manager.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ShortcutUtil {
|
||||
|
|
@ -30,7 +33,7 @@ public class ShortcutUtil {
|
|||
|
||||
private static Bitmap getBitmap(Context context, int id) {
|
||||
var r = context.getResources();
|
||||
var res = r.getDrawable(id, r.newTheme());
|
||||
var res = r.getDrawable(id, context.getTheme());
|
||||
if (res instanceof BitmapDrawable) {
|
||||
return ((BitmapDrawable) res).getBitmap();
|
||||
} else {
|
||||
|
|
@ -108,20 +111,42 @@ public class ShortcutUtil {
|
|||
return PendingIntent.getBroadcast(context, 0, intent, flags).getIntentSender();
|
||||
}
|
||||
|
||||
public static void requestPinLaunchShortcut(Runnable afterPinned) {
|
||||
if (!App.isParasitic()) throw new RuntimeException();
|
||||
var context = App.getInstance();
|
||||
private static ShortcutInfo.Builder getShortcutBuilder(Context context) {
|
||||
var builder = new ShortcutInfo.Builder(context, SHORTCUT_ID)
|
||||
.setShortLabel(context.getString(R.string.app_name))
|
||||
.setIntent(getLaunchIntent(context))
|
||||
.setIcon(Icon.createWithAdaptiveBitmap(getBitmap(context, R.drawable.ic_launcher)));
|
||||
.setIcon(Icon.createWithAdaptiveBitmap(getBitmap(context,
|
||||
R.drawable.ic_launcher)));
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
var activity = new ComponentName(context.getPackageName(),
|
||||
"android.app.AppDetailsActivity");
|
||||
builder.setActivity(activity);
|
||||
}
|
||||
return builder;
|
||||
}
|
||||
|
||||
public static boolean isRequestPinShortcutSupported(Context context) {
|
||||
var sm = context.getSystemService(ShortcutManager.class);
|
||||
sm.requestPinShortcut(builder.build(), registerReceiver(context, afterPinned));
|
||||
return sm.isRequestPinShortcutSupported();
|
||||
}
|
||||
|
||||
public static void requestPinLaunchShortcut(Runnable afterPinned) {
|
||||
if (!App.isParasitic()) throw new RuntimeException();
|
||||
var context = App.getInstance();
|
||||
var sm = context.getSystemService(ShortcutManager.class);
|
||||
if (!isRequestPinShortcutSupported(context)) return;
|
||||
sm.requestPinShortcut(getShortcutBuilder(context).build(),
|
||||
registerReceiver(context, afterPinned));
|
||||
}
|
||||
|
||||
public static boolean updateShortcut() {
|
||||
if (!isLaunchShortcutPinned()) return false;
|
||||
Log.d(App.TAG, "update shortcut");
|
||||
var context = App.getInstance();
|
||||
var sm = context.getSystemService(ShortcutManager.class);
|
||||
List<ShortcutInfo> shortcutInfoList = new ArrayList<>();
|
||||
shortcutInfoList.add(getShortcutBuilder(context).build());
|
||||
return sm.updateShortcuts(shortcutInfoList);
|
||||
}
|
||||
|
||||
public static boolean isLaunchShortcutPinned() {
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@
|
|||
<!-- WelcomeDialog -->
|
||||
<string name="parasitic_welcome">Welcome to LSPosed</string>
|
||||
<string name="parasitic_welcome_summary">You are using the parasitic manager, which can create shortcut or still open from notification.</string>
|
||||
<string name="parasitic_welcome_summary_no_shortcut_support">You are using the parasitic manager, which can open from notification.</string>
|
||||
<string name="create_shortcut">Create shortcut</string>
|
||||
<string name="never_show">Never show</string>
|
||||
<string name="app_welcome">Parasitic Manager Recommended</string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue