获取所有已安装软件以及获取应用程序版本信息

最近在做一个视频跳转播放功能,也就是在第三方应用中播放本应用内的视频,这需要获取第三方应用的版本号,以便做兼容,其实获取第三方应用的版本号很简单:

     // 获取所有已安装的应用包名、版本号、版本名称

private int getVersionCode(){
        PackageManager packageManager = this.getPackageManager();
        try {
            PackageInfo packageInfo = packageManager.getPackageInfo(this.getPackageName(), 0);
            String packageName = packageInfo.packageName;
            String versionName = packageInfo.versionName;
            int versionCode = packageInfo.versionCode;
            Log.d("chg",""+"packageName-->"+packageName+"--versionName-->"+versionName+"--versionCode-->"+versionCode);
            return versionCode;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return 0;
    }

// 获取已经安装的应用的包名、版本号、版本名称。

private int getAllVersionCode(){
        PackageManager packageManager=getPackageManager();
        List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
        for(PackageInfo info:packageInfos){
            String versionName1 = info.versionName;
            int versionCode1 = info.versionCode;
            String packageName1 = info.packageName;
            Log.d("chg","--versionName-->"+versionName1);
            Log.d("chg","--versionCode-->"+versionCode1);
            Log.d("chg","--packageName1-->"+packageName1);
            if (info.packageName.equals("com.eebbk.syncenglish")){
                String versionName = info.versionName;
                int versionCode = info.versionCode;
                Log.d("chg","--versionName-->"+versionName);
                Log.d("chg","--versionCode-->"+versionCode);
                return versionCode;
            }
        }
        return 0;
    }

其中"com.eebbk.syncenglish"就是你要获取的已安装的应用包名,有了这个指定包名,才可以获取指定应用的版本号。
获取到版本号就可以做判断实现跳转了:

if (getAllVersionCode() >= 31 ) {
        Intent intent = new Intent();
        Bundle bundle = new Bundle();
        ComponentName componentName = new ComponentName("com.eebbk.vtraining", "com.eebbk.vtraining.play.outsideplay.OutSideVideoPlayerActivity");
        intent.setComponent(componentName);
        intent.setAction("com.eebbk.vtraining.outsideplay");
        intent.addCategory("android.intent.category.DEFAULT");
        bundle.putString("intent_course_package_url", mVideoDownInfos.get(mCurPlayVideoIndex).videoLink);
        bundle.putString("intent_video_name", mVideoDownInfos.get(mCurPlayVideoIndex).downFileInfo.fileNameStr);
        bundle.putString("intent_app_name","同步英语");
        intent.putExtras(bundle);
        startActivity(intent);
}

其中红色标记的是跳转的应用包名,蓝色标记的是具体跳转的界面位置,注意那个Action别写错了,要对应,在跳转的那个应用的清单文件中别忘了做配置。

好了,之后视频播放就是另外一个应用的事了,人家从我这获取都数据后即可播放。

一、应用程序得到自己的版本信息

/** 
 * 得到当前应用版本名称的方法 
 *  
 * @param context 
 *            :上下文 
 * @throws Exception 
 */  
public static String getVersionName(Context context) throws Exception {  
    // 获取packagemanager的实例  
    PackageManager packageManager = context.getPackageManager();  
    // getPackageName()是你当前类的包名  
    PackageInfo packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);  
    String version = packInfo.versionName;  
    return version;  
}
二、应用程序获得其他应用程序的版本信息(根据包名)
/** 
 * 获取指定包名的版本号 
 *  
 * @param context 
 *            本应用程序上下文 
 * @param packageName 
 *            你想知道版本信息的应用程序的包名 
 * @return 
 * @throws Exception 
 */  
public static String getVersionName(Context context, String packageName) throws Exception {  
    // 获取packagemanager的实例  
    PackageManager packageManager = context.getPackageManager();  
    PackageInfo packInfo = packageManager.getPackageInfo(packageName, 0);  
    String version = packInfo.versionName;  
    return version;  
}
三、从SD卡等路劲获取某安装包(apk文件)的版本信息

/** 
 * 从一个apk文件去获取该文件的版本信息 
 *  
 * @param context 
 *            本应用程序上下文 
 * @param archiveFilePath 
 *            APK文件的路径。如:/sdcard/download/XX.apk 
 * @return 
 */  
public static String getVersionNameFromApk(Context context, String archiveFilePath) {  
    PackageManager pm = context.getPackageManager();  
    PackageInfo packInfo = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES);  
    String version = packInfo.versionName;  
    return version;  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值