アプリ A が 1 つあり、それを device にインストールしました。
public class A1 extends Activity {
void onCreate() ...
void onResume() ...
void showToast() {
Toast.makeText(this, "showA1", Toast.LENGTH_SHORT).show();
}
}
そして、A1.showToast() を実行したい別のアプリ B を作成しましたが、A1.showToast()で NullPointerException に遭遇しました。
@SuppressWarnings("unchecked")
@Override
public void onClick(View v) {
String packagePath = "A";
String classPath = "A.A1";
try {
String apkName = getPackageManager().getApplicationInfo(
packagePath, 0).sourceDir;
PathClassLoader pathClassLoader = new PathClassLoader(apkName,
ClassLoader.getSystemClassLoader());
Class<Activity> handler = (Class<Activity>) Class.forName(
classPath, true, pathClassLoader);
Method[] mm = handler.getDeclaredMethods();
for (Method m : mm) {
Log.d("Method", m.getName());
}
Method method = handler.getDeclaredMethod("showToast",
(Class[]) null);
method.setAccessible(true);
method.invoke(handler.newInstance(), (Object[]) null);
} catch (Exception e) {
e.printStackTrace();
}
}
A1が初期化されていないことはわかっているので、「これ」はnullです。誰かが問題について私を助けることができますか?