Android系统应用开发(二)有条件的获取所有app以及自定义
2016-09-12 17:36
573 查看
1.Android在一个APP中通过包名或类名启动另一个APP
2.获取设备上所有apk,及筛选,,改变图标
调用apk方法一:知道包名类名 /** * @exception :启动apk * @param :String 包名 * @param :String 类名 * **/ public void startActivity(String packageName,String className){ Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName cn = new ComponentName(packageName, className); intent.setComponent(cn); startActivity(intent); } 调用apk方法二:只知道知道包名 /** * @exception :启动apk * @param :String 包名 * **/ public void startAPP(String appPackageName){ try{ Intent intent = this.getPackageManager().getLaunchIntentForPackage(appPackageName); startActivity(intent); }catch(Exception e){ Toast.makeText(this, "没有安装", Toast.LENGTH_LONG).show(); } } 同一个apk内部启动另一个activity: MainActivity:当前所在activity SetActivity:要启动的activity Intent intent = new Intent(MainActivity.this,SetActivity.class); startActivity(intent);
2.获取设备上所有apk,及筛选,,改变图标
/** * @exception 获取所有apk * @param Context * @retrun List<PackageInfo> 储存所有app的列表 * **/ public List<PackageInfo> getAllApps(Context context) { List<PackageInfo> apps = new ArrayList<PackageInfo>(); PackageManager pManager = context.getPackageManager(); // 获取手机内所有应用 List<PackageInfo> packlist = pManager.getInstalledPackages(0); for (int i = 0; i < packlist.size(); i++) { PackageInfo pak = (PackageInfo) packlist.get(i); /*设置 浏览器 计算器 相机 ES文件浏览器 电视 本地影音 WPS 下载 音乐 系统apk筛选 */ if ( pak.packageName.equals("com.android.settings") ||pak.packageName.equals("com.android.browser") ||pak.packageName.equals("com.android.calculator2") ||pak.packageName.equals("com.android.camera2") ||pak.packageName.equals("com.jrm.localmm")|| pak.packageName.equals("com.estrongs.android.pop") || pak.packageName.equals("com.mstar.tv.tvplayer.ui")|| pak.packageName.equals("cn.wps.moffice_eng") || pak.packageName.equals("com.android.providers.downloads.ui")|| pak.packageName.equals("com.android.music") || (pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) { //pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0 非系统apk apps.add(pak); } // 判断是否为非系统预装的应用程序 // 这里还可以添加系统自带的,这里就先不添加了,如果有需要可以自己添加 // if()里的值如果<=0则为自己装的程序,否则为系统工程自带 // if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) { // // 添加自己已经安装的应用程序 // apps.add(pak); // } } return apps; } /** * @exception 获取apk的图标及改变图标 * **/ public List<AppsItemInfo> getData(){ // 获取图片、应用名、包名 pManager =this.getPackageManager(); List<PackageInfo> appList = getAllApps(this); list = new ArrayList<AppsItemInfo>(); for (int i = 0; i < appList.size(); i++) { PackageInfo pinfo = appList.get(i); AppsItemInfo shareItem = new AppsItemInfo(); if (appList.get(i).packageName.equals("com.android.settings")) { // 设置图片,根据包名替换apk图标 shareItem.setIcon(getResources().getDrawable(R.drawable.settings)); }else { // 设置图片 shareItem.setIcon(pManager .getApplicationIcon(pinfo.applicationInfo)); } // 设置应用程序名字 shareItem.setLabel(pManager.getApplicationLabel( pinfo.applicationInfo).toString()); // 设置应用程序的包名 shareItem.setPackageName(pinfo.applicationInfo.packageName); // 设置应用程序的类名 shareItem.setClassName(pinfo.applicationInfo.className); list.add(shareItem); } return list; } //存放apk信息的类 public class AppsItemInfo { private Drawable icon; // 存放图片 private String label; // 存放应用程序名 private String packageName; // 存放应用程序包名 private String className; // 存放应用程序包名 public int flag = 0; public static final int MOVE_FLAG = 1; public static final int STATIC_FLAG = 0; public Drawable getIcon() { return icon; } public void setIcon(Drawable icon) { this.icon = icon; } public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public String getPackageName() { return packageName; } public void setPackageName(String packageName) { this.packageName = packageName; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; }
相关文章推荐
- android 获取系统安装的所有的浏览器应用
- android获取所有应用信息,判断系统应用或第三方应用,监听应用安装和卸载
- 关于获取Android系统所有已安装App信息的一些操作(详细)
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- Android应用获取通知栏权限是否开启--以及跳转到系统设置界面--解决方案
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- Android开发系统工具类SysUtils:获取App版本号、SD卡目录、缓存目录、是否后台运行、前台可见
- Android开发之获取系统所有进程信息。
- Android系统应用开发(八)ANR应用程序与无响应对话框自定义
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- android 应用如何获取系统权限 以及root系统方法
- 输出Bag中的所有记录为一个json数组---精通android、IOS App应用服务程序开发
- 实例解析iOS开发中系统音效以及自定义音效的应用
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- 【Android应用开发详解】实现第三方授权登录、分享以及获取用户资料
- Android初学------系统设置之获取所有安装应用大小
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
- Android开发之获取APP的应用程序名称以及版本名称信息java工具类
- Android系统应用开发(四)系统语言以及添加字体库
- 获取Android系统应用的包名以及应用名!