Android菜鸟笔记- 获取未安装的APK图标、版本、包名、名称、是否安装、安装、打开

周末闲来无事,把Android的基础知识拿出来复习复习,今天主题是《获取未安装的APK图标、版本、包名、名称、是否安装、跳转安装、打开》

一、获取APK图标

通常读取APK的图标可以用,PackageManager里面的getApplicationIcon(ApplicationInfo)来得到一个drawable。但实际使用的时候经常只能得到一个默认的图标,根本不是APK的图标。

参考小米开源文件管理器,结合实践,代码如下:

/*
     * 采用了新的办法获取APK图标,之前的失败是因为android中存在的一个BUG,通过
     * appInfo.publicSourceDir = apkPath;来修正这个问题,详情参见:
     * http://code.google.com/p/android/issues/detail?id=9151
     */
    public static Drawable getApkIcon(Context context, String apkPath) {
        PackageManager pm = context.getPackageManager();
        PackageInfo info = pm.getPackageArchiveInfo(apkPath,
                PackageManager.GET_ACTIVITIES);
        if (info != null) {
            ApplicationInfo appInfo = info.applicationInfo;
            appInfo.sourceDir = apkPath;
            appInfo.publicSourceDir = apkPath;
            try {
                return appInfo.loadIcon(pm);
            } catch (OutOfMemoryError e) {
                Log.e("ApkIconLoader", e.toString());
            }
        }
        return null;
    }
以下代码段中PackageManager、PackageInfo、ApplicationInfo均同上面一致。

二、获取APK名称

String label = appInfo.loadLabel(mPackManager).toString();

三、获取APK包名

String packageName = appInfo.packageName;

四、获取APK版本

String version = info.versionName==null?"0":info.versionName

五、判断APK是否安装

private boolean isApkInstalled(String packagename)
	  {
	    PackageManager localPackageManager = getPackageManager();
	    try
	    {
	      PackageInfo localPackageInfo = localPackageManager.getPackageInfo(packagename, PackageManager.GET_UNINSTALLED_PACKAGES);
	      return true;
	    }
	    catch (PackageManager.NameNotFoundException localNameNotFoundException)
	    {
	     return false;
	    }

	  }

六、安装APK

 private void installAPK(String apkPath)
	 {
		 Intent intent = new Intent();
		 intent.setAction(Intent.ACTION_VIEW);
		 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		 intent.setDataAndType(Uri.parse("file://" + apkPath),
					"application/vnd.android.package-archive");
		 mContext.startActivity(intent);
	 }

七、打开APK

</pre><pre name="code" class="java"> private void openAPK(String packagename)
	 {
		   PackageManager packageManager = mContext.getPackageManager();
		   Intent intent=new Intent();
		   intent =packageManager.getLaunchIntentForPackage(packagename);
		   mContext.startActivity(intent);
	 }

Ps.关于APK的静默安装还在研究中...

Android菜鸟笔记- 获取未安装的APK图标、版本、包名、名称、是否安装、安装、打开,布布扣,bubuko.com

时间: 2024-08-02 02:43:17

Android菜鸟笔记- 获取未安装的APK图标、版本、包名、名称、是否安装、安装、打开的相关文章

Android菜鸟笔记- 获取未安装的APK图标、版本号、包名、名称、是否安装、安装、打开

周末闲来无事,把Android的基础知识拿出来复习复习,今天主题是<获取未安装的APK图标.版本号.包名.名称.是否安装.跳转安装.打开> 一.获取APK图标 通常读取APK的图标能够用,PackageManager里面的getApplicationIcon(ApplicationInfo)来得到一个drawable.但实际使用的时候常常仅仅能得到一个默认的图标.根本不是APK的图标. 參考小米开源文件管理器,结合实践,代码例如以下: /* * 採用了新的办法获取APK图标.之前的失败是由于a

android如何查找安装的apk app的包名和Activity

http://www.51testing.com/html/01/610901-864955.html 解决办法:a.有源码的情况,找到AndroidManifest.xml,找到android.intent.category.LAUNCHER关键字,就能找到需要的Activity包名在这里看;<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.chnM

Android菜鸟笔记-WifiPickerActivity 实现跳转到系统自带wifi连接界面

前言: 在使用一些APP时,比如Google Play,在没有连接到网络时,APP会自动跳转到系统自带的wifi连接界面(如下图),在这个界面下连接wifi有一个很好的功能:在没有连上wifi热点时,"下一步"按钮是无法点击,这种体验效果是非常好的,确保了在下一步时,有网络可以使用. 实现步骤: 1. 怎么才能跳转到这个界面?(通过adb logcat查看Google Play跳转时的ACTION,log如下) I/ActivityManager(  444): START u0 {a

获取未安装的APK图标

/* * 采用了新的办法获取APK图标,之前的失败是因为android中存在的一个BUG,通过 * appInfo.publicSourceDir = apkPath;来修正这个问题,详情参见: * http://code.google.com/p/android/issues/detail?id=9151 */ public static Drawable getApkIcon(Context context, String apkPath) { PackageManager pm = con

如何快速得到 Apk 的签名/包名等信息

方法来源于百度搜索:原文链接 方法1:通过 Android 客户端 将要获取的 Apk 安装到豌豆荚 Android 版上,然后通过「应用管理」找到该应用,进入应用的详情页,连续点击应用图标 5 下,即可得到该 Apk 的包名.versionCode.签名等信息. 方法2:通过敲几行命令(无论该 App 是否收录,均通用) 获取 Apk 包名.VersionCode.VersionName 等相关信息 通过使用 aapt,可以获取 Apk 的包括 packageName.title.versio

完整版java读取apk、ipa包名、版本名、版本号等信息

有时候,我们上传apk或者是ipa文件的时候,是需要读取到里面的一些信息的,比如软件的包名,以及其版本信息等.在网上搜索了一下资料 , 找了很多版本,对于apk文件的版本号,一直读取不到,在这里,笔者自己总结了,读取apk.ipa文件的一些代码,大家可以参考下,去其糟粕,取其精华.以便适用于自己的需求. 下面会提供源码给大家,我用的开发工具是eclipse,直接导入就可以,jar包也是我已经下载好的,大家可以免积分拿去.本来里面是有2个apk.2个ipa文件提供测试的,但是由于文件太大,上传不了

Android自动化编译设置AndroidManifest.xml中package值(包名)

手动修改Android的AndroidManifest.xml中package值(包名)很简单,手动修改即可.但是项目中需要把Android的项目源代码放到服务器端在客户下载时候动态编译生成,且生成的app签名相同但包名不同(若此时包名相同就是相同的app),这种需求需要在服务器端自动化编译Android源代码时候自动调整AndroidManifest.xml中package值才能实现.查阅相关资料,结合Java对XML文件的读写技术,写了一个方法,让服务器端在编译之前预加载修改AndroidM

Android 学习笔记---获取RadioGroup的选定值

1,获取RadioGroup控件: RadioGroup radioGroup = (RadioGroup)findViewById(R.id.myRadioGroup); 2,获取RadioButton控件; RadioButton radioButton = (RadioButton)findViewById(radioGroup.getCheckedRadioButtonId()); 3,获取选中的radio的值: String text = radioButton.getText().t

Android学习笔记--获取传感器信息

原文链接:http://www.open-open.com/lib/view/open1423812538326.html android 4.4 (API等级19)支持以下传感器: (注意并不是所有的手机都支持全部的传感器) TYPE_ACCELEROMETER 加速度传感器,单位是m/s2,测量应用于设备X.Y.Z轴上的加速度 传感器类型值(Sensor Type):1 (0x00000001) TYPE_AMBIENT_TEMPERATURE 温度传感器,单位是℃ 传感器类型值(Senso