使用PackageManager和ResolverInfo
2013-10-16 14:25
141 查看
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.test01" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.test01.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Activity01" android:label="@string/activity01" android:icon="@drawable/authentication_name_n"> <intent-filter > <action android:name="cxd.test.demo"/> </intent-filter> </activity> <activity android:name=".Activity02" android:label="@string/activity02" android:icon="@drawable/box_tj_h"> <intent-filter > <action android:name="cxd.test.demo"/> </intent-filter> </activity> <activity android:name=".Activity03" android:label="@string/activity03" android:icon="@drawable/box_tj"> <intent-filter > <action android:name="cxd.test.demo"/> </intent-filter> </activity> </application> </manifest>这个是在manifest.xml配置文件中每个activity中配置了一个intent的行动,然后在MainActivity中
public class MainActivity extends ListActivity { private PackageManager mPackageManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mPackageManager = getPackageManager(); List<ResolveInfo> activities = mPackageManager.queryIntentActivities( makeDemoActivityIntent(), PackageManager.GET_META_DATA); getListView().setAdapter( new ActivityListAdapter(this, activities, mPackageManager)); } protected Intent makeDemoActivityIntent() { Intent intent = new Intent(Constants.DEMO_ACTION); return intent; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub ActivityInfo resolveInfo = ((ResolveInfo) l.getItemAtPosition(position)).activityInfo; Intent intent = new Intent(); intent.setComponent(new ComponentName(resolveInfo.packageName, resolveInfo.name)); startActivity(intent); } }这里的
Intent intent = new Intent(Constants.DEMO_ACTION);参数就是
<action android:name="cxd.test.demo"/>里的参数
public class ActivityListAdapter extends BaseAdapter { private List<ResolveInfo> mData; private LayoutInflater mInflater; private PackageManager mPackageManager; public ActivityListAdapter(Context context, List<ResolveInfo> data, PackageManager packagetManager) { mData = data; mInflater = LayoutInflater.from(context); mPackageManager = packagetManager; } @Override public int getCount() { return mData.size(); } @Override public ResolveInfo getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ResolveInfo resolveInfo = getItem(position); if (null == convertView) { convertView = mInflater.inflate( android.R.layout.simple_list_item_1, parent, false); } ((TextView) convertView) .setText(resolveInfo.loadLabel(mPackageManager)); ((TextView) convertView).setCompoundDrawables( resolveInfo.loadIcon(mPackageManager), null, null, null); return convertView; } }
在ListActivity中点击每一个item然后就可以进入到activity中去,如果要做中文匹配的话在res文件里面新建values-zh-rCN.xml配置文件中新建string.xml文件,写中文版的
相关文章推荐
- ubuntu下安装和使用php的fileinfo扩展
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
- Androidn Notification的使用,解决找不到setLatestEventInfo方法
- (Notification)setLatestEventInfo方法在新SDK不能使用的解决方法及2个Error
- C#获取文件(磁盘驱动器)的关联图标(使用API SHGetFileInfo)
- 只显示 前100个字 java 实现截取字符串!使用! <c:if test="${fn:length(onebeans.info)>100 }">${ fn:substri
- 使用CultureInfo和RegionInfo类进行全球化和本地化
- 使用sqoop将数据从hdfs中导入mysql时,卡在INFO mapreduce.Job: map 100% reduce 0%的解决办法
- MapX系列-- 使用LayerInfo object 在map中添加栅格图层
- 使用VB.NET的FileInfo和DirectoryInfo类进行文件操作
- 使用jstl,session.setAttribute不能设置名称为“userinfo”,否则获取不到
- 使用SHGetFileInfo函数获取任何文件大图标
- 使用Infoagent 构造调度输配系统
- redis info 命令查看redis使用情况
- React Native获取移动设备信息(react-native-device-info)如何使用?
- SpringMVC中使用CommonsMultipartResolver进行文件上传
- boost库asio详解5——resolver与endpoint使用说明
- (转)Android中获取应用程序(包)的信息-----PackageManager的使用(一)
- Spring Boot中使用Actuator的/info端点输出Git版本信息
- Shiro SimpleAuthenticationInfo使用