public class TActivity extends Activity {
private TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
private void init(){
text=(TextView)findViewById(R.id.text);
Intent intent=new Intent("com.xikang.yjc.text",null);
PackageManager pm=getPackageManager();
final List<ResolveInfo> plugins=pm.queryIntentActivities(intent, 0);
System.out.println(plugins.size());
ResolveInfo rinfo=plugins.get(0);
ActivityInfo ainfo=rinfo.activityInfo; String packageName=ainfo.packageName;
String dexPath=ainfo.applicationInfo.sourceDir;
String dexOutputDir=getApplicationInfo().dataDir;
String libPath=ainfo.applicationInfo.nativeLibraryDir;
DexClassLoader cl=new DexClassLoader(dexPath, dexOutputDir, libPath, this.getClass().getClassLoader());
try {
Class<?> clazz=cl.loadClass(packageName+".AndroidTextActivity");
Object obj=clazz.newInstance();
Class[] param=new Class[2];
param[0]=Integer.TYPE;
param[1]=Integer.TYPE;
Method action=clazz.getMethod("tt", param);
Integer i=(Integer)action.invoke(obj, 12,34);
text.setText(i);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}package com.xikang.yjc.text;import android.app.Activity;
import android.os.Bundle;public class AndroidTextActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void tt(int a,int b){
System.out.println(a+b);
}
}问题处于第一个类的Intent intent=new Intent("com.xikang.yjc.text",null);
final List<ResolveInfo> plugins=pm.queryIntentActivities(intent, 0);
plugins这个是空的 是我启动的这个"com.xikang.yjc.text"有问题吗? 这个是写调用apk的包名吗?
private TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
private void init(){
text=(TextView)findViewById(R.id.text);
Intent intent=new Intent("com.xikang.yjc.text",null);
PackageManager pm=getPackageManager();
final List<ResolveInfo> plugins=pm.queryIntentActivities(intent, 0);
System.out.println(plugins.size());
ResolveInfo rinfo=plugins.get(0);
ActivityInfo ainfo=rinfo.activityInfo; String packageName=ainfo.packageName;
String dexPath=ainfo.applicationInfo.sourceDir;
String dexOutputDir=getApplicationInfo().dataDir;
String libPath=ainfo.applicationInfo.nativeLibraryDir;
DexClassLoader cl=new DexClassLoader(dexPath, dexOutputDir, libPath, this.getClass().getClassLoader());
try {
Class<?> clazz=cl.loadClass(packageName+".AndroidTextActivity");
Object obj=clazz.newInstance();
Class[] param=new Class[2];
param[0]=Integer.TYPE;
param[1]=Integer.TYPE;
Method action=clazz.getMethod("tt", param);
Integer i=(Integer)action.invoke(obj, 12,34);
text.setText(i);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}package com.xikang.yjc.text;import android.app.Activity;
import android.os.Bundle;public class AndroidTextActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void tt(int a,int b){
System.out.println(a+b);
}
}问题处于第一个类的Intent intent=new Intent("com.xikang.yjc.text",null);
final List<ResolveInfo> plugins=pm.queryIntentActivities(intent, 0);
plugins这个是空的 是我启动的这个"com.xikang.yjc.text"有问题吗? 这个是写调用apk的包名吗?
Intent intent=new Intent("com.xikang.yjc.text",null);
里面的第一个参数action需要在manifest里面注册