- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在为 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/
如标题所述,我想使用 xposed 记录应用程序中调用的所有方法,从它开始直到我停止它。我只想记录类名、方法名,不想 Hook 所有方法。我尝试此代码,但收到错误 getMethod not foun
我正在尝试 Hook 一个方法: findAndHookMethod("com.android.keyguard.KeyguardPatternView.UnlockPatternListener"
我正在尝试为电报应用程序开发我自己的 Xposed 模块,但是当我尝试 Hook 名为“setOnClickListener”的方法时,Xposed 显示以下错误: de.robv.android.x
我正在构建一个 xposed 模块,我只想在某个进程(应用程序)调用此方法时才 Hook 该方法。我可以使用 Binder 获取进程 pid 和 uid,但是我找不到没有上下文的方法来获取包名称(我在
我正在研究 XPosedModule,但我需要帮助: 我 hook 了一个方法,它有一些局部变量(只能在这个方法中访问),但我需要访问这些变量。我试过了 XposedHelpers.getObject
我尝试 Hook 所有应用程序,如何获取应用程序的上下文。 我试过了 try { Class ContextClass = XposedHelpers.findClass("android.c
假设我有一个像这样定义的枚举类(改编自 java documentation ) package com.example.planetExample; public enum Planet {
在 Xposed 中,我试图调用 AppCustomClass 的方法 getResult对象在 Hook 方法中作为参数传递。 protected void myMethod(XC_LoadPack
我正在开发一个 Xposed 模块,作为 FatMinMin 的扩展 minminHide module这似乎也是一个很好的开发练习:)问题是在启动期间,当我检查 xposed 日志时,我得到以下信息
我希望能够从我的 Xposed 模块发布通知、显示 toasts 和启动/停止服务,为此我需要一个 Context。我的 Xposed 模块有它自己的上下文吗?如果没有,我可以通过挂接到另一个进程来获
我尝试 Hook Settings.System.putInt 方法,它是 static。此方法的调用之一是在 com.android.settings.AirplaneModeEnabler 类的
我正在浏览 Android 中的 Xposed 框架。专门看博客-http://d3adend.org/blog/?p=589对于潜在的对策,并且有几个关于这些问题的问题。 因此,当我们使用 Xpos
如题,我想hook第三个app,可以从第三个app的activity调用我的application activity。所以我想获取第三个app的context,怎么办? 第三个app的包是com.ss
我正在使用 Xposed 做一些方法 Hook (现在,只是为了学习)。我设法 Hook 方法 SendTextMessage (android.telephony.SmsManager),我可以在方
我正在尝试制作一个 Xposed 模块。我首先阅读了一个教程,其中包含操作时钟的说明。代码如下: package de.robv.android.xposed.mods.tutorial; impor
我试图在我新获得 root 权限的 Xposed 智能手机上安装 Snapchat。但是登录是不可能的,因为 Snapchat 检测到 Xposed Framework。我“理解”此限制的原因,尽管我
我正在为 Xposed 创建一个模块,它做我想做的,但我想为用户提供一个简单的首选项屏幕来输入两个整数值。 我主要用的是能找到的教程here on XDA . 教程说明必须创建一个 Activity
如何在 BroadcastReceiver 中挂接 onReceive 方法? public class RecentsActivity extends Activity { mIntentRec
我是 Android 编程的新手,并开始了我的第一个项目作为 Xposed 模块,这个 xposed 模块有一个选项,当它被启用时它会改变一个可绘制文件,现在好吗?我遇到的问题是在 public vo
我正在尝试在 Android 上使用 Xposed 来连接到 Android 资源,特别是 Webview 的 loadUrl。下面的代码 Hook 到 loadUrl,如果成功,将在日志中打印一条消
我是一名优秀的程序员,十分优秀!