首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

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

2012-09-10 
判断一个activity是否存在于系统中??? 已知包名和类名,如何判断这个activity是否在系统中存在呢?很简单,通

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

热点排行