gpt4 book ai didi

android - Xposed 如何创建带有 GUI 首选项屏幕的模块

转载 作者:搜寻专家 更新时间:2023-11-01 07:52:45 27 4
gpt4 key购买 nike

我正在为 Xposed 创建一个模块,它做我想做的,但我想为用户提供一个简单的首选项屏幕来输入两个整数值。

我主要用的是能找到的教程here on XDA .

教程说明必须创建一个 Activity 来显示和管理首选项屏幕,好的。但在那之后,没有关于如何将其链接到 Xposed 以便用户可以单击模块列表中的模块名称并访问首选项屏幕的任何解释,而我只是收到一条消息“该模块不提供用户界面".

我没有找到任何关于如何执行此操作的文档。有人可以启发我吗?

最佳答案

我想我找到了罪魁祸首(至少这解决了我的问题)。好像Xposed automatically detects if the app has launchable activity , 并开始它。没有 API。来源:Xposed 源码:

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
String packageName = (String) v.getTag();
if (packageName == null)
return;

if (packageName.equals(NOT_ACTIVE_NOTE_TAG)) {
Intent intent = new Intent(getActivity(), XposedInstallerActivity.class);
intent.putExtra(XposedInstallerActivity.EXTRA_SECTION, XposedDropdownNavActivity.TAB_INSTALL);
startActivity(intent);
return;
}

Intent launchIntent = getSettingsIntent(packageName);
if (launchIntent != null)
startActivity(launchIntent);
else
Toast.makeText(getActivity(), getActivity().getString(R.string.module_no_ui), Toast.LENGTH_LONG).show();
}

因此,您只需要创建一个 Activity ,但我认为这还不够:您还必须在 Eclipse 中将其设为“启动器 Activity ”,或者您可以通过添加 CATEGORY_LAUNCHER 手动完成> Intent 过滤器。

如果成功,当您将应用程序从 eclipse 推送到您的测试手机时,该应用程序将自动打开(就像任何其他应用程序一样)。如果发生这种情况,通常应用程序也应该在 Xposed 中打开。

例如,这是我放入 my class 中的内容:

package xxx.xxx.xxx;

import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;

public class MainSettingsActivity extends PreferenceActivity {

@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Setup a non-default and world readable shared preferences, so that 1- we know the name (necessary for XSharedPreferences()), 2- the preferences are accessible from inside the hook.
PreferenceManager prefMgr = getPreferenceManager();
prefMgr.setSharedPreferencesName("pref_mine");
prefMgr.setSharedPreferencesMode(MODE_WORLD_READABLE);
addPreferencesFromResource(R.xml.pref_settings);
}

}

然后在主类中使用钩子(Hook)中的首选项:

public class Main implements IXposedHookLoadPackage {
public XSharedPreferences pref;

@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XSharedPreferences pref = new XSharedPreferences(Main.class.getPackage().getName(), "pref_mine"); // load the preferences using Xposed (necessary to be accessible from inside the hook, SharedPreferences() won't work)
pref.makeWorldReadable();
pref.reload();
pref.getString("some_var", "default_value");
...

关于android - Xposed 如何创建带有 GUI 首选项屏幕的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32555529/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com