我已经反编译了一个apk用于java代码,在其中我得到了这些整数值代替R.id和R.layouts。你能解释一下为什么会这样吗?
protected void onCreate(Bundle paramBundle)
{
super.onCreate(paramBundle);
setContentView(2130903041);
this.b1 = ((Button)findViewById(2131230721));
this.b2 = ((Button)findViewById(2131230722));
this.b1.setOnClickListener(new View.OnClickListener()
{
public void onClick(View paramAnonymousView)
{
Settingss.this.showDialog(1);
}
});
this.b2.setOnClickListener(new View.OnClickListener()
{
public void onClick(View paramAnonymousView)
{
Settingss.this.showDialog(2);
}
});
}
protected Dialog onCreateDialog(int paramInt)
{
if (paramInt == 1)
{
final Dialog localDialog1 = new Dialog(this);
localDialog1.setContentView(2130903043);
localDialog1.setTitle("Set Message");
final EditText localEditText = (EditText)localDialog1.findViewById(2131230724);
Button localButton1 = (Button)localDialog1.findViewById(2131230721);
((Button)localDialog1.findViewById(2131230722)).setOnClickListener(new View.OnClickListener()
我知道第一个setContentView(2130903041)用于R.layout.layoutname,接下来的两个是布局中的按钮,所以我直接用按钮的特定ID替换整数值。
单击布局中的SetMessage按钮时,会弹出一个对话框,要求设置消息。所以我不知道如何设置该对话框的ID,因为布局中没有提到它并且从不知道地弹出。
我感到困惑的代码是:
final Dialog localDialog1 = new Dialog(this);
localDialog1.setContentView(2130903043);
localDialog1.setTitle("Set Message");
final EditText localEditText = (EditText)localDialog1.findViewById(2131230724);
Button localButton1 = (Button)localDialog1.findViewById(2131230721);
((Button)localDialog1.findViewById(2131230722)).setOnClickListener(new View.OnClickListener()
{
答案 0 :(得分:0)
这很简单。生成apk后,ID会在java文件中转换为 Decimal 值。您必须将其转换为十六进制(您可以使用计算器执行此操作)。获得十六进制值后,只需在 R.java 文件中搜索它,就会得到字段或id的名称。
例如,在行中:localDialog1.setContentView(2130903043);
十六进制中的id是7F030003。现在,您可以在R.java文件中搜索此值。