Android系统应用开发(二)有条件的获取所有app以及自定义
来源:互联网 发布:网络故障诊断和排除 编辑:程序博客网 时间:2024/05/02 22:15
1.Android在一个APP中通过包名或类名启动另一个APP
调用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:当前所在activitySetActivity:要启动的activityIntent 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;}
0 0
- Android系统应用开发(二)有条件的获取所有app以及自定义
- android 获取系统安装的所有的浏览器应用
- android 获取系统内所有应用的信息
- 【转】android获取所有安装的非系统应用
- 获取Android系统应用的包名以及应用名!
- android开发之获取手机所有应用的包名
- iOS开发- 获取安装的所有App
- 【Android应用场景】Android开发邮箱APP(二)
- android adb 获取所有app 的uid
- 获取系统中所有应用的方法
- Android逆向之旅---获取加固后应用App的所有方法信息
- Android中如何获取加固后应用App的所有方法信息
- 关于获取Android系统所有已安装App信息的一些操作(详细)
- [Android]备忘在Fragment获取高度(基本不起作用,有条件的起作用,有待改进)
- Android 获取手机所有应用包名以及权限
- ###*获取Android手机所有应用包名以及类名*
- Android获取所有安装的应用
- Android应用开发(二):Activity生命周期剖析以及如何启动新的Activity或网页
- SpringMVC文件上传下载
- #学习笔记#gulp配置文件入门
- 成功解决RecyclerView Bug:IndexOutOfBoundsException: Inconsistency detected. Invalid item position
- tomcat+redis+nginx集群搭建
- 项目开发常用到的jquery第三方
- Android系统应用开发(二)有条件的获取所有app以及自定义
- Android睡眠唤醒机制--HAL-->Kernel
- PHP 状态码汇总
- iOS 修改应用程序名称
- Android adb 常用命令学习
- import com.sun.image.codec.jpeg.JPEGCodec不通过 找不到包
- C#匿名类和匿名方法
- mongo常用命令
- android高仿微信表情输入与键盘输入详解