读书人

判断一个activity是不是存在于系统中

发布时间: 2012-09-10 11:02:32 作者: rapoo

判断一个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.类名。

读书人网 >移动开发

热点推荐