我有一个包含 classes.dex 的 apk。我没有apk源代码。我已经从 dex 文件(LoginActivity)加载了一个活动,并在 LoginActivity 中为 button1 实现了 onClicklistener。我成功加载 dex 文件并通过以下代码从 dex 文件开始活动:
DexClassLoader dex = new DexClassLoader(dexInternalStoragePath.getAbsolutePath(), mAppContext.getCacheDir().getPath(), null, loader);
toasterClass = dex.loadClass("com.example.myapplication.ui.login.LoginActivity");
Intent intent = new Intent();
intent.setClass(getApplicationContext(),toasterClass);
setContentView(View.inflate(getApplicationContext(), R.layout.activity_login, null));
Button mAddTaskButton = (Button) findViewById(R.id.button2);
mAddTaskButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog aldlg = new AlertDialog.Builder(gLoginActivity.this).create();
aldlg.setTitle("Login");
aldlg.setMessage("You pressed Login Button");
aldlg.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
aldlg.show();
}
});
startActivity(intent);
但是当我点击button2时,它没有显示alertdialog。我认为android正在阻止从活动之外更改onClicklistener。这是正确的吗?任何帮助如何实现这一点?