Android ComponentName的用法
来源:互联网 发布:数据下载网站 编辑:程序博客网 时间:2024/05/22 10:59
ComponentName与Intent同位于Android.content包下,我们从Android官方文档中可以看到,这个类主要用来定义可见一个应用程序组件,例如:Activity,Service,BroadcastReceiver或者ContentProvider。
那么,如何用ComponentName来定义一个组件呢。
这是ComponentName的构造函数:ComponentName(String pkg,String cls)
我们知道在Android应用程序中如果要详细描述一个组件我们需要知道该组件所在的应用包名,也就是在AndroidManifest.xml文件中manifest根结点下的package=“com.XXXXX.XXXXX",还有组件在应用程序中的完整路径名,拿Activity来说,也就是activity节点中name属性的值。因此到这里我们也就明白了可以使用ComponentName来封装一个组件的应用包名和组件的名字。
我们已经知道,在Android中组件之间的交流往往使用意图(Intent)来完成的,那么在Intent中有一个方法可以封装一个ComponentName,最后我们在使用意图去完成我们需要实现的功能。下面来讲一下ComponentName如何使用。
Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动(其中className是指完整的类名):
Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName cn = new ComponentName(packageName, className); intent.setComponent(cn);startActivity(intent);
但是更多的时候,我们一般都不知道应用程序的启动Activity的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名。
下面是实现代码:
private void openApp(String packageName) {PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0);Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);resolveIntent.setPackage(pi.packageName);List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);ResolveInfo ri = apps.iterator().next();if (ri != null ) {String packageName = ri.activityInfo.packageName;String className = ri.activityInfo.name;Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER);ComponentName cn = new ComponentName(packageName, className);intent.setComponent(cn);startActivity(intent);}}
- Android ComponentName的用法
- Android ComponentName的用法
- Android ComponentName的用法
- Android ComponentName的用法
- Android ComponentName的用法
- Android ComponentName的用法
- Android笔记---ComponentName的用法
- Android之ComponentName的用法
- Android ComponentName用法
- Android ComponentName的使用
- 关于ComponentName的一些用法
- Android ComponentName
- Android ComponentName
- Android中ComponentName的简单运用
- android ComponentName的使用 之app交互
- android示例之ComponentName
- Android ComponentName简介
- android启动第三方程序的代码(利用ComponentName)
- Android studio插件GsonFormat 的使用
- 微信支付java版本之关闭订单
- This application is modifying the autolayout engine from a background thread after the engine was ac
- Android 开发:Translucent System Bar 的最佳实践
- 有关于cocos js的碰撞方法记录
- Android ComponentName的用法
- Logistic Classification
- 使用MVC模型的用户登录及注册(注册验证)
- freeswitch debug
- canvas.translate(x,y)使用
- TimeUnit用法
- Python中的List:一种数据结构
- php导出csv文件,可导出前导0实例
- shell 快捷键