Remove useless menus (#21)

* Remove stop app in menu

* Remove some menus for Android System

* Remove uninstall from app menu

* Remove module list export
This commit is contained in:
tehcneko 2021-01-31 15:54:08 +08:00 committed by GitHub
parent ced2805566
commit e4880979e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 11 additions and 136 deletions

View File

@ -4,7 +4,6 @@
package="io.github.lsposed.manager">
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />

View File

@ -1,7 +1,5 @@
package io.github.lsposed.manager.adapters;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
@ -241,13 +239,6 @@ public class ScopeAdapter extends RecyclerView.Adapter<ScopeAdapter.ViewHolder>
if (launchIntent != null) {
activity.startActivity(launchIntent);
}
} else if (itemId == R.id.app_menu_stop) {
try {
ActivityManager manager = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
manager.killBackgroundProcesses(info.packageName);
} catch (Exception e) {
e.printStackTrace();
}
} else if (itemId == R.id.app_menu_compile_speed) {
CompileUtil.compileSpeed(activity, activity.getSupportFragmentManager(), info);
} else if (itemId == R.id.app_menu_compile_dexopt) {
@ -265,8 +256,6 @@ public class ScopeAdapter extends RecyclerView.Adapter<ScopeAdapter.ViewHolder>
}
} else if (itemId == R.id.app_menu_info) {
activity.startActivity(new Intent(ACTION_APPLICATION_DETAILS_SETTINGS, Uri.fromParts("package", info.packageName, null)));
} else if (itemId == R.id.app_menu_uninstall) {
activity.startActivity(new Intent(Intent.ACTION_UNINSTALL_PACKAGE, Uri.fromParts("package", info.packageName, null)));
} else {
return false;
}
@ -358,8 +347,11 @@ public class ScopeAdapter extends RecyclerView.Adapter<ScopeAdapter.ViewHolder>
if (launchIntent == null) {
menu.removeItem(R.id.app_menu_launch);
}
if ((info.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
menu.removeItem(R.id.app_menu_uninstall);
if (android) {
menu.removeItem(R.id.app_menu_compile_speed);
menu.removeItem(R.id.app_menu_compile_dexopt);
menu.removeItem(R.id.app_menu_compile_reset);
menu.removeItem(R.id.app_menu_store);
}
});

View File

@ -24,15 +24,9 @@ import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.snackbar.Snackbar;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import io.github.lsposed.manager.Constants;
import io.github.lsposed.manager.R;
@ -164,86 +158,8 @@ public class ModulesActivity extends BaseActivity implements ModuleUtil.ModuleLi
return super.onCreateOptionsMenu(menu);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) {
return;
}
if (requestCode == 42) {
File listModules = new File(Constants.getEnabledModulesListFile());
if (data != null) {
Uri uri = data.getData();
if (uri != null) {
try {
OutputStream os = getContentResolver().openOutputStream(uri);
if (os != null) {
FileInputStream in = new FileInputStream(listModules);
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) > 0) {
os.write(buffer, 0, len);
}
os.close();
}
} catch (Exception e) {
Snackbar.make(binding.snackbar, getResources().getString(R.string.logs_save_failed) + "\n" + e.getMessage(), Snackbar.LENGTH_LONG).show();
}
}
}
} else if (requestCode == 43) {
if (data != null) {
Uri uri = data.getData();
if (uri != null) {
try {
OutputStream os = getContentResolver().openOutputStream(uri);
if (os != null) {
PrintWriter fileOut = new PrintWriter(os);
Set<String> keys = ModuleUtil.getInstance().getModules().keySet();
for (String key1 : keys) {
fileOut.println(key1);
}
fileOut.close();
os.close();
}
} catch (Exception e) {
Snackbar.make(binding.snackbar, getResources().getString(R.string.logs_save_failed) + "\n" + e.getMessage(), Snackbar.LENGTH_LONG).show();
}
}
}
}
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
Intent intent;
int itemId = item.getItemId();
if (itemId == R.id.export_enabled_modules) {
if (ModuleUtil.getInstance().getEnabledModules().isEmpty()) {
Snackbar.make(binding.snackbar, R.string.no_enabled_modules, Snackbar.LENGTH_SHORT).show();
return false;
}
intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/*");
intent.putExtra(Intent.EXTRA_TITLE, "enabled_modules.list");
startActivityForResult(intent, 42);
return true;
} else if (itemId == R.id.export_installed_modules) {
Map<String, ModuleUtil.InstalledModule> installedModules = ModuleUtil.getInstance().getModules();
if (installedModules.isEmpty()) {
Snackbar.make(binding.snackbar, R.string.no_installed_modules, Snackbar.LENGTH_SHORT).show();
return false;
}
intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/*");
intent.putExtra(Intent.EXTRA_TITLE, "installed_modules.list");
startActivityForResult(intent, 43);
return true;
}
if (AppHelper.onOptionsItemSelected(item, preferences)) {
moduleUtil.updateModulesList(false, null);
reloadModules.run();

View File

@ -3,9 +3,6 @@
<item
android:id="@+id/app_menu_launch"
android:title="@string/app_launch" />
<item
android:id="@+id/app_menu_stop"
android:title="@string/app_stop" />
<item
android:id="@+id/app_menu_compile_speed"
android:title="@string/menu_title_compile_speed" />
@ -21,7 +18,4 @@
<item
android:id="@+id/app_menu_info"
android:title="@string/module_app_info" />
<item
android:id="@+id/app_menu_uninstall"
android:title="@string/module_uninstall" />
</menu>

View File

@ -8,21 +8,6 @@
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="ifRoom" />
<item
android:title="@string/export_"
app:showAsAction="never">
<menu>
<item
android:id="@+id/export_enabled_modules"
android:title="@string/export_enabled_modules"
app:showAsAction="never" />
<item
android:id="@+id/export_installed_modules"
android:title="@string/export_installed_modules"
app:showAsAction="never" />
</menu>
</item>
<item
android:id="@+id/item_list_sort"
android:title="@string/menu_sort"

View File

@ -41,7 +41,6 @@
<string name="warning_xposed_min_version">该模块需要更新版本的 LSPosed(%d), 因此无法被激活</string>
<string name="no_min_version_specified">该模块未指定所需的 LSPosed 版本</string>
<string name="warning_min_version_too_low">该模块针对 LSPosed %1$d 版本构建 , 由于不兼容 %2$d 版本中的变更, 现已被停用</string>
<string name="module_launch">打开</string>
<string name="module_app_info">应用信息</string>
<string name="modules_app_store">在应用商店查看</string>
<string name="module_uninstall">卸载</string>
@ -114,7 +113,6 @@
<string name="pref_title_disable_verbose_log">禁用详细日志</string>
<string name="logs_cannot_read">无法读取日志: \n</string>
<string name="app_launch">运行</string>
<string name="app_stop">停止</string>
<string name="compile_failed">优化失败或返回值为空</string>
<string name="compile_failed_with_info">优化失败: </string>
<string name="not_installed">未安装</string>
@ -122,8 +120,8 @@
<string name="pref_title_disable_modules_log">禁用模块日志</string>
<string name="pref_disable_modules_log_summary">模块抛出的的异常堆栈仍将正常抓取</string>
<string name="follow_system">跟随系统</string>
<string name="pure_black_dark_theme">使用纯黑深色主题</string>>
<string name="install_timestamps">安装于 %1$s\n更新于 %2$s</string>
<string name="pure_black_dark_theme">使用纯黑深色主题</string><![CDATA[>
]]>
<string name="xposed_not_active">LSPosed 框架未安装或未激活, 您可在设置中关闭状态检查</string>
<string name="transparent_status_bar">透明状态栏</string>
<string name="sort_by_name">应用名称</string>
@ -139,7 +137,6 @@
<string name="colorized_action_bar">着色应用栏</string>
<string name="settings_group_theme">主题</string>
<string name="material_design_2">惨白设计</string>
<string name="menu_scope">作用域</string>
<string name="settings_enable_resources">启用资源钩子</string>
<string name="settings_enable_resources_summary"><b>警告: </b> 资源钩子已被弃用</string>
<string name="settings_variant">变体</string>

View File

@ -41,7 +41,6 @@
<string name="warning_xposed_min_version">該模塊需要更新版本的 LSPosed(%d), 因此無法被激活</string>
<string name="no_min_version_specified">該模塊未指定所需的 LSPosed 版本</string>
<string name="warning_min_version_too_low">該模塊針對 LSPosed %1$d 版本構建 , 由於不兼容 %2$d 版本中的變更, 現已被停用</string>
<string name="module_launch">打開</string>
<string name="module_app_info">應用信息</string>
<string name="modules_app_store">在應用商店查看</string>
<string name="module_uninstall">卸載</string>
@ -113,15 +112,14 @@
<string name="pref_title_disable_verbose_log">禁用詳細日誌</string>
<string name="logs_cannot_read">無法讀取日誌: \n</string>
<string name="app_launch">運行</string>
<string name="app_stop">停止</string>
<string name="compile_failed">優化失敗或返回值為空</string>
<string name="not_installed">未安裝</string>
<string name="reboot_system">重啟至系統</string>
<string name="pref_title_disable_modules_log">禁用模塊日誌</string>
<string name="pref_disable_modules_log_summary">模塊拋出的的異常堆棧仍將正常抓取</string>
<string name="follow_system">跟隨系統</string>
<string name="pure_black_dark_theme">使用純黑深色主題</string>>
<string name="install_timestamps">安裝於 %1$s\n更新於 %2$s</string>
<string name="pure_black_dark_theme">使用純黑深色主題</string><![CDATA[>
]]>
<string name="xposed_not_active">LSPosed 框架未安裝或未激活, 您可在設置中關閉狀態檢查</string>
<string name="transparent_status_bar">透明狀態欄</string>
<string name="sort_by_name">應用名稱</string>

View File

@ -41,7 +41,6 @@
<string name="warning_xposed_min_version">該模組需要更新版本的 LSPosed(%d), 因此無法被啟用</string>
<string name="no_min_version_specified">該模組未指定所需的 LSPosed 版本</string>
<string name="warning_min_version_too_low">該模組針對 LSPosed %1$d 版本構建 , 由於不相容 %2$d 版本中的變更, 現已被停用</string>
<string name="module_launch">開啟</string>
<string name="module_app_info">App 資訊</string>
<string name="modules_app_store">在 Play 商店檢視</string>
<string name="module_uninstall">解除安裝</string>
@ -113,15 +112,14 @@
<string name="pref_title_disable_verbose_log">禁用詳細日誌</string>
<string name="logs_cannot_read">無法讀取日誌: \n</string>
<string name="app_launch">執行</string>
<string name="app_stop">停止</string>
<string name="compile_failed">優化失敗或返回值為空</string>
<string name="not_installed">未安裝</string>
<string name="reboot_system">重啟至系統</string>
<string name="pref_title_disable_modules_log">禁用模組日誌</string>
<string name="pref_disable_modules_log_summary">模組丟擲的的異常堆疊仍將正常抓取</string>
<string name="follow_system">跟隨系統</string>
<string name="pure_black_dark_theme">使用純黑深色主題</string>>
<string name="install_timestamps">安裝於 %1$s\n更新於 %2$s</string>
<string name="pure_black_dark_theme">使用純黑深色主題</string><![CDATA[>
]]>
<string name="xposed_not_active">LSPosed 框架未安裝或未啟用, 您可在設定中關閉狀態檢查</string>
<string name="transparent_status_bar">透明狀態列</string>
<string name="sort_by_name">App 名稱</string>

View File

@ -42,7 +42,6 @@
<string name="warning_xposed_min_version">This module requires a newer LSPosed version (%d) and thus cannot be activated</string>
<string name="no_min_version_specified">This module does not specify the LSPosed version it needs.</string>
<string name="warning_min_version_too_low">This module was created for LSPosed version %1$d, but due to incompatible changes in version %2$d, it has been disabled</string>
<string name="module_launch">Launch UI</string>
<string name="modules_app_store">View in App Store</string>
<string name="module_app_info">App info</string>
<string name="module_uninstall">Uninstall</string>
@ -50,7 +49,6 @@
<!-- Download tab -->
<string name="menuSearch">Search</string>
<string name="menuReload">Reload</string>
<string name="install_timestamps">Installed on %1$s\nUpdated on %2$s</string>
<!-- Settings tab -->
<string name="settings_group_framework">Framework</string>
@ -125,7 +123,6 @@
<string name="pref_title_disable_verbose_log">Disable verbose logs</string>
<string name="logs_cannot_read">Cannot read log: \n</string>
<string name="app_launch">Launch it</string>
<string name="app_stop">Stop it</string>
<string name="compile_failed">Optimization failed or return value is empty</string>
<string name="compile_failed_with_info">Optimization failed: </string>
<string name="not_installed">Not installed</string>
@ -149,7 +146,6 @@
<string name="colorized_action_bar">Colorized action bar</string>
<string name="settings_group_theme">Theme</string>
<string name="material_design_2">Material Design 2</string>
<string name="menu_scope">Scope</string>
<string name="settings_variant">Variant</string>
<string name="menu_optimize">Optimize…</string>
<string name="menu_show_system_apps">System apps</string>