判断一个activity是否存在于系统中
??? 已知包名和类名,如何判断这个activity是否在系统中存在呢?很简单,通过intent就行。
Intent intent = new Intent(); intent.setClassName("包名", "类名"); if(getPackageManager().resolveActivity(intent, 0) == null) { //说明系统中不存在这个activity } 1 楼 hsx9566 2010-09-08 按你说的:Intent intent = new Intent();
intent.setClassName("包名", "类名");
intent.resolveActivity(getPackageManager()) 得到的都是“ComponentInfo{包名/类名}"
不管存不存在都不为null 2 楼 chroya 2010-09-08 hsx9566 写道按你说的:
Intent intent = new Intent();
intent.setClassName("包名", "类名");
intent.resolveActivity(getPackageManager()) 得到的都是“ComponentInfo{包名/类名}"
不管存不存在都不为null
不是的,不存在的话,会返回null的 3 楼 hsx9566 2010-09-08 我在2.1系统中试过,包名类名分别写aa,bb。
结果
if(intent.resolveActivity(getPackageManager()) == null) {
}
里的语句是没出现。
倒是
if(intent.resolveActivity(getPackageManager()) != null) {
}
里的语句能打印出。
不知怎么回事,请教下。
4 楼 hsx9566 2010-09-08 楼主你那个项目试下
public class test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent i=new Intent();
i.setClassName("aa", "bb");
if(i.resolveActivity(getPackageManager()) == null) {
System.out.println("not exist");
}
if(i.resolveActivity(getPackageManager()) != null) {
System.out.println("exist");
}
}
}
这样的结果会打印出exist。
我正需要判断这个,你试成功了,给我个回复。 5 楼 chroya 2010-09-08 hsx9566 写道楼主你那个项目试下
public class test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent i=new Intent();
i.setClassName("aa", "bb");
if(i.resolveActivity(getPackageManager()) == null) {
System.out.println("not exist");
}
if(i.resolveActivity(getPackageManager()) != null) {
System.out.println("exist");
}
}
}
这样的结果会打印出exist。
我正需要判断这个,你试成功了,给我个回复。
不好意思,是我的失误,已经纠正了。感谢hsx9566! 6 楼 hsx9566 2010-09-08 这样可以了,谢谢。 7 楼 ksk0418lsl 2011-07-29 经测试可以,但是要注意packageName 可以同伙 getPackageName()得到,指的是apk的包路径,className 用类的全路径也就是 xx.xx.xx.类名。