Android -- queryIntentActivities
某些时候你想要知道某个APP是否有注册了一个明确的intent,比如说你想要检查某个receiver是否存在,然后根据是否存在来这个receiver来在你的AP里面enable某些功能。我们可以通过PackageManager来check它。
code
public boolean isIntentAvailable(Context context, String action) { final PackageManager packageManager = context.getPackageManager(); final Intent intent = new Intent(action); List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); if (resolveInfo.size() > 0) { return true; } return false; }
干货
一般APP的manifest里面要设置为launcher的activity总是要设置intent-filter:
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
可以通过queryIntentActivities来获得有哪些launcher:
private void loadApps() { Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); mApps = getPackageManager().queryIntentActivities(mainIntent, 0); }
我们可以在自己的app上用一个gridview显示出当前手机有哪些app:
import java.util.List; import android.app.Activity; import android.content.Intent; import android.content.pm.ResolveInfo; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; public class MyHome extends Activity { GridView mGrid; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); loadApps(); setContentView(R.layout.main); mGrid = (GridView) findViewById(R.id.apps_list); mGrid.setAdapter(new AppsAdapter()); } private List<ResolveInfo> mApps; private void loadApps() { Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); mApps = getPackageManager().queryIntentActivities(mainIntent, 0); } public class AppsAdapter extends BaseAdapter { public AppsAdapter() { } public View getView(int position, View convertView, ViewGroup parent) { ImageView i; if (convertView == null) { i = new ImageView(MyHome.this); i.setScaleType(ImageView.ScaleType.FIT_CENTER); i.setLayoutParams(new GridView.LayoutParams(50, 50)); } else { i = (ImageView) convertView; } ResolveInfo info = mApps.get(position); i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager())); return i; } public final int getCount() { return mApps.size(); } public final Object getItem(int position) { return mApps.get(position); } public final long getItemId(int position) { return position; } } }
可以设置点击监听器去开启app:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,long id) { ResolveInfo info = mApps.get(position); //该应用的包名 String pkg = info.activityInfo.packageName; //应用的主activity类 String cls = info.activityInfo.name; ComponentName componet = new ComponentName(pkg, cls); Intent i = new Intent(); i.setComponent(componet); startActivity(i); }
我是天王盖地虎的分割线
本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/4287077.html,如需转载请自行联系原作者
Android -- queryIntentActivities相关推荐
- exported android,Android activity exported属性理解
背景 这么久了,我自己看来对此属性的理解有点小偏差,当然不是表面上的理解误差,而是涉及到具体实现的细节.这里先贴下官方关于此属性的解释: android:exported This element s ...
- android默认exported_Android activity exported属性理解
背景 这么久了,我自己看来对此属性的理解有点小偏差,当然不是表面上的理解误差,而是涉及到具体实现的细节.这里先贴下官方关于此属性的解释: android:exported This element s ...
- Android源码分析-PackageManagerService(PMS)源码分析(三)- queryIntentActivities函数来查找activity
queryIntentActivities函数的作用: 在Android应用程序开发中,用startActivity可以开启另外一个Activity或应用.startActivity函数必须包含Int ...
- Android系统默认Home应用程序(Launcher)的启动过程源代码分析
在前面一篇文章中,我们分析了Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应 ...
- [高级]android应用开发之intent的妙用二
相信做android应用开发的朋友对intent组件都已经是相当熟悉了,这里鄙人总结一下intent的妙用,希望对大家有帮助. intent妙用之列出所有已安装的应用程序列表 装载:http://bl ...
- Java中intentfiler_【Android - 组件】之IntentFilter的匹配规则
我们知道,Activity的启动模式分为两种,分别是显式启动和隐式启动.显式启动需要明确的指定被启动的对象的组件信息,包括包名和类名:而隐式启动需要 Intent 能够匹配目标组件的 IntentFi ...
- android 7.0拷贝文件,Android 7.0应用间共享文件----FileProvider
应用间经常需要将自己的私有文件共享给其他的app,如某应用想要共享图库的图片用来编辑用户的头像,或者文件管理app允许用户在不同目录下复制粘贴文件等等,但为了保护私有文件的安全性,在targetSdk ...
- com.android.phone已停止 vivo,oppo,vivo应用程序终止通知不在android fcm中出...
Infinix Note 5 (Android One- Oreo) and Oppo F9(Oreo) are not getting push notification if app is kil ...
- android跳转应用市场搜索,Android 应用中跳转到应用市场评分
在开发Android App过程中,经常会遇见这样的功能.从当前的app跳转到一个应用商店并且跳转到自己app的详情页面,让用户给自己的App进行评分.评价,从而提高自己App的排名.下面介绍三种方法 ...
最新文章
- 在Kubernetes集群上部署高可用Harbor镜像仓库
- 【Netty】NIO 选择器 ( Selector ) 通道 ( Channel ) 缓冲区 ( Buffer ) 网络通信案例
- 表的插入、更新、删除、合并操作_7_通过视图插入
- 从零写一个编译器(十一):代码生成之Java字节码基础
- 16个烧光你脑细胞的悖论
- 从多级延迟触发器到边沿检测
- 谈谈我国电子商务中的安全问题
- U盘容量显示错误修正
- ADB PC端和目标板的基本连接建立步骤和文件交换:
- vue可以编辑发布多长的视频_vue视频的总时长是多少
- 【实习生面试】阿里前端实习生一面流程及题目
- 深圳必去的50个免费景点 景色绝美
- win10计算机远程连接命令,详细教你win10设置远程桌面连接命令
- 数据库的数据保护:数据的安全性和完整性
- windows挂起进程方法介绍
- javascript_JSON.parse() 与 JSON.stringify()_ZHOU125disorder_
- 如何通过TotalControl系统设置,提高电脑操作手机速度(教程)
- 计算机默认桌面位置,怎么更改电脑桌面存储位置?
- Django-APIView
- 计算机一级access教程,计算机一级考试Access傻瓜教程.doc
热门文章
- 运动目标跟踪__kalman
- WIN32 C++ 遍历文件夹
- joc杂志影响因子2019_2019年放射学领域SCI主要杂志影响因子汇总
- SQL基础学习总结:1(数据库)
- ubuntu 设置开机执行脚本_ubuntu-18.04 设置开机启动脚本
- Java项目:电商书城平台系统设计和实现(java+springboot+mysql+spring+jsp)
- 数据库和服务器什么协议,数据库服务器协议
- nodejs 根据坐标 标记图片上的姓名列
- ssm 实现房屋租赁系统
- 八皇后的一个回溯递归解法