`
chroya
  • 浏览: 659760 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

 
阅读更多

    已知包名和类名,如何判断这个activity是否在系统中存在呢?很简单,通过intent就行。

        Intent intent = new Intent();
        intent.setClassName("包名", "类名");      
        if(getPackageManager().resolveActivity(intent, 0) == null) {
        	//说明系统中不存在这个activity
        }
0
0
分享到:
评论
7 楼 ksk0418lsl 2011-07-29  
经测试可以,但是要注意packageName 可以同伙 getPackageName()得到,指的是apk的包路径,className 用类的全路径也就是 xx.xx.xx.类名。
6 楼 hsx9566 2010-09-08  
这样可以了,谢谢。
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!
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。
我正需要判断这个,你试成功了,给我个回复。
3 楼 hsx9566 2010-09-08  
我在2.1系统中试过,包名类名分别写aa,bb。
结果
if(intent.resolveActivity(getPackageManager()) == null) {  
   
}
里的语句是没出现。
倒是
if(intent.resolveActivity(getPackageManager()) != null) {  
   
}
里的语句能打印出。
不知怎么回事,请教下。
2 楼 chroya 2010-09-08  
hsx9566 写道
按你说的:
Intent intent = new Intent();  
intent.setClassName("包名", "类名"); 
      
intent.resolveActivity(getPackageManager()) 得到的都是“ComponentInfo{包名/类名}"

不管存不存在都不为null

不是的,不存在的话,会返回null的
1 楼 hsx9566 2010-09-08  
按你说的:
Intent intent = new Intent();  
intent.setClassName("包名", "类名"); 
      
intent.resolveActivity(getPackageManager()) 得到的都是“ComponentInfo{包名/类名}"

不管存不存在都不为null

相关推荐

    同一个APK多个icon进入同一个Activity的不同tab页

    在Android开发中,有时我们需要一个APK支持多个入口点,每个入口点对应不同的功能或界面,比如同一个应用可以通过不同的图标进入不同的Tab页。这个需求在一些常驻应用中尤为常见,比如电话本应用,用户可能希望通过...

    Android Activity设置相同的action进行判断源码.rar

    1. **重写onNewIntent()**: 当一个已存在的Activity被新的Intent唤醒,并且设置了相同的Action,系统会调用onNewIntent()方法而不是重新创建一个新的Activity实例。开发者可以在这里根据Intent的其他属性(如Data、...

    Android代码-Activity设置相同的action进行判断源码.zip

    在Android中,Intent是一个消息传递对象,它用于启动一个新的Activity或服务,或者传递数据给已存在的组件。Intent的Action是它的核心属性之一,用于描述Intent的目的。例如,ACTION_VIEW用于查看或打开一个资源,...

    在Android中查看当前Activity是否销毁的操作

    Activity 销毁是指当一个 Activity 不再被使用时,系统将其从内存中删除的过程。 查看当前 Activity 是否销毁的操作 要查看当前 Activity 是否销毁,可以使用 Android 提供的调试工具 dumpsys 命令。dumpsys 命令...

    Android Activity设置相同的action进行判断源码.zip

    当Activity已经处于前台运行,并且接收到一个新的Intent(即使它与之前启动Activity的Intent action相同),系统不会重新创建Activity,而是调用已存在Activity的onNewIntent()方法。开发者可以在这个方法中处理新...

    android中判断服务或者进程是否存在实例

    在 Android 系统中,判断进程是否存在可以使用 ActivityManager 的 getRunningAppProcesses() 方法来获取当前系统中的所有进程信息,然后通过遍历进程信息来判断当前进程是否存在。下面是一个示例代码: ```java ...

    AndroidActivity设置相同的action进行判断源码.zip

    - **单实例模式(SingleInstance)**:整个任务栈中只有一个该Activity的实例,新Intent会复用已存在的实例。 - **单任务模式(SingleTask)**:如果栈中没有该Activity,会创建新的任务栈并启动;如果有,会清除...

    Activity 工作流节点新增节点和获取节点属性修改底层文件

    1. 创建一个新的Activity类,继承自android.app.Activity或者其子类,如AppCompatActivity。 2. 在新Activity的布局文件中设计UI元素。 3. 在新Activity类中实现业务逻辑,处理用户的输入事件和回调函数。 4. 在主...

    Android receiver 多次启动相同Activity

    3. **设置单例BroadcastReceiver**:如果BroadcastReceiver是在代码中动态注册的,可以考虑将其设计为单例模式,确保只有一个实例存在,从而避免多次接收广播。 4. **使用 Sticky Broadcast**:Sticky Broadcast...

    Android Activity 通信简单示例

    1. **back stack**: Android系统维护了一个后退栈来管理Activity,按下返回键会弹出栈顶的Activity。 2. **finish()**: 调用`finish()`方法可以结束当前Activity,将其从栈中移除。 7. **FLAG_ACTIVITY_XXX**: ...

    Android源码——Activity设置相同的action进行判断源码_new_02.zip

    5. **处理多个匹配项**:如果存在多个匹配的Activity,系统可能会询问用户来选择,或者根据其他策略(如最近使用的Activity)来决定启动哪一个。如果开发者希望强制系统只启动特定的Activity,可以在AndroidManifest...

    Activity最小化终极解决方案

    然后在`onPause()`方法中,创建一个线程来读取Logcat的日志,检查是否有特定的Log信息表明Home键被按下。这种方法依赖于系统日志的输出,因此可能不是100%可靠,但通常可以满足大多数情况的需求。 ```java @...

    Boot process and Manage of the Activity

    4. 在启动Activity的过程中,如果发现承载Activity的应用程序进程不存在,ActivityManagerService会启动一个新的应用程序进程。 5. 新的应用程序进程启动后,会向ActivityManagerService发送启动完成的请求,随后...

    Activity 工作过程1

    在Android系统中,Activity的工作过程是一个复杂且有序的流程,涉及到多个组件和方法的调用。下面我们将深入解析Activity从启动到显示的具体步骤,以及其中的关键知识点。 首先,当一个Activity被启动时,Android...

    测试Activity的四种启动模式对startActivityForResult的影响

    当启动一个SingleTask`Activity`时,系统会检查栈中是否存在该`Activity`,如果存在,就会清除它上面的所有`Activity`,然后将请求的结果通过`onActivityResult`回调。如果不存在,系统会创建新的`Activity`实例并放...

    Android查找应用是否在手机上存在并打开

    在Android开发中,有时我们需要检测一个特定的应用程序是否已经安装在用户的手机上,并在找到后能够启动该应用。这个过程涉及到几个关键的概念和技术,包括应用的包名、查询已安装应用的方法以及启动应用的API。以下...

    android Activity启动模式(launchMode)

    1. standard(标准模式):每次启动都会创建一个新的Activity实例,不论栈中是否存在该Activity。 2. singleTop(栈顶复用模式):如果新启动的Activity已经在栈顶,那么就不再创建新的实例,而是复用栈顶的那个实例...

Global site tag (gtag.js) - Google Analytics