`
xuanzhui
  • 浏览: 200486 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

安卓系统已安装软件的判断及通过程序安装

 
阅读更多

1. 查看系统是否已经安装某个应用

private boolean appInstalledOrNot(String uri) {
    PackageManager pm = getPackageManager();
    boolean appInstalled;
    try {
        pm.getPackageInfo(uri, 0);
        appInstalled = true;
    }
    catch (PackageManager.NameNotFoundException e) {
        appInstalled = false;
    }
    return appInstalled;
}

 

 uri是指AndroidManifest.xml文件中的package,是安卓应用的标识符。

 

2. 判断安装的版本号

private int getAPKVersion(String uri) {
    Integer version = -1;

    PackageManager packageManager=getPackageManager();
    try {
    	//0 means all the flags are turned off
        PackageInfo Info=packageManager.getPackageInfo(uri, 0);

        //like 5
        version = Info.versionCode;

        //like 1.0.5
        versionName = Info.versionName;

    } catch (PackageManager.NameNotFoundException e) {
        Log.e("error", e.getMessage());
    }

    return version;
}

 

 

3. 安装

基本思路:apk放到assets目录下,安装时先写到sd,再调用intent安装

private void installScannerPlugin() {
    AssetManager assetManager = getAssets();

    InputStream in;
    OutputStream out;

    try {
        in = assetManager.open("BarcodeScanner.apk");
        out = new FileOutputStream(Environment.getExternalStorageDirectory()
                + File.separator + "BarcodeScanner.apk");

        byte[] buffer = new byte[1024];

        int len;
        while((len = in.read(buffer)) != -1) {
            out.write(buffer, 0, len);
        }

        in.close();

        out.flush();
        out.close();

        Intent intent = new Intent(Intent.ACTION_VIEW);

        intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory()
                        + File.separator + "BarcodeScanner.apk")),
                "application/vnd.android.package-archive");

        startActivity(intent);

    } catch(Exception e) {
        e.printStackTrace();
    }
}

 需要权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 

注意:如果是APP通过自动下载apk安装升级,在安装时务必要加上

installIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

 否则安装完成之后将没有“完成”和“打开”这样的选项提供选择,程序直接退出。

 

 

分享到:
评论

相关推荐

    安卓Android源码——安卓Android中禁止某软件的安装.rar

    这份"安卓Android源码——安卓Android中禁止某软件的安装.rar"文件可能包含了一种方法或工具,用于通过修改系统源码来实现这一功能。下面我们将深入探讨这个主题。 首先,了解安卓系统的权限模型至关重要。在安卓中...

    安卓Android源码——安卓Android中禁止某软件的安装.zip

    在安卓(Android)系统中,应用的安装与管理是用户自由度相当高的一个部分,但有时出于安全或特定需求,我们可能需要禁止某些应用程序的安装。这篇内容将深入解析如何在Android源码层面实现这一功能。 首先,我们...

    android静默安装和智能安装

    在Android系统中,静默安装(Silent Installation)和智能安装是两种自动化处理应用程序安装的方式,它们主要用于批量管理和部署应用,特别是在企业环境中。静默安装允许在用户无感知的情况下自动完成应用的安装过程...

    Android开发获取系统中已安装程序信息的方法

    另外,还可以判断程序包是否安装在SD卡上,可以通过检查flags标志中是否包含ApplicationInfo.FLAG_EXTERNAL_STORAGE来判断。 在获取程序包信息时,需要使用AppInfo对象来存储程序包的信息,该对象包含了程序包的...

    Android代码-软件冰箱(安卓版)

    "软件冰箱"的用户界面需要提供清晰的界面元素,如列表视图展示已安装应用,以及选择和操作(冻结/解冻)这些应用的按钮。这涉及到Android的布局设计和事件监听。 6. **BroadcastReceiver**: 可能会用到...

    安卓系统DSA

    【安卓系统DSA】是针对Android操作系统设计的一款驾驶辅助软件,主要功能是提供行车安全预警服务,通常被称为“安卓电子狗”。这款应用的核心在于其能够帮助驾驶员在行驶过程中避开交通违章监控点、测速雷达以及危险...

    Android高级应用源码-Android中禁止某软件的安装.zip

    在Android系统中,禁止特定软件的安装涉及到对系统的安全性和权限管理有深入的理解。这个"Android高级应用源码-Android中禁止某软件的安装.zip"压缩包可能包含了一个示例项目,展示了如何通过编程的方式实现这一功能...

    酷派手机自动识别系统

    酷派手机自动识别系统是一款专为酷派品牌手机设计的智能软件管理工具,它能够自动检测并识别酷派手机的型号、系统版本等关键信息,从而帮助用户更准确地安装适用于其设备的安卓应用程序。这款系统优化了安装过程,...

    Android中禁止某软件的安装.rar

    在Android系统中,有时我们可能需要禁止特定的软件安装,以保护设备安全或者避免不必要的应用干扰。这通常涉及到对系统权限的管理以及了解Android的权限模型。以下将详细讲解如何在Android系统中实现这一功能。 ...

    Android系统木马隐藏及检测技术

    随着Android操作系统的普及,越来越多的用户使用这一平台进行通信、娱乐、学习及工作,随之而来的是针对Android系统的恶意软件数量急剧增加。根据网秦安全公司的报告,恶意软件中高达78%来自Android平台,远超过其他...

    Android版本检测安装

    Android系统有不同的版本,如KitKat、Lollipop、Marshmallow、Nougat、Oreo、Pie、Q、R等,每个版本都有其特定的API级别。通过调用Android SDK提供的`Build`类中的方法,开发者可以获取设备当前运行的Android版本...

    基于android系统的BMI软件的设计与研究.doc

    《基于Android系统的BMI软件的设计与研究》这篇文档主要探讨了如何在Android平台上设计和实现一个BMI(身体质量指数)计算软件。BMI是一种常用的健康评估指标,通过身高和体重的比例来判断个体的肥胖程度和健康状况...

    制作安卓签名证书工具.rar

    在Android系统中,每个发布到Google Play Store或其他第三方市场的应用程序都需要一个数字签名。这个签名证书包含了开发者身份的信息,包括开发者的名字、组织和证书的有效期。通过签名,用户可以确认应用是由可信赖...

    android卸载程序代码

    在Android系统中,卸载应用程序通常涉及到对Android SDK(软件开发工具包)的理解以及使用Java编程语言。这里我们将深入探讨如何通过代码实现卸载已安装的程序,特别注意的是,剔除原装软件可能需要系统级别的权限,...

    安卓2.3系统ROOT

    Root权限是Android系统中的最高权限,它允许用户访问并控制系统的每一个角落。一旦设备被Root,用户可以删除预装应用、调整系统设置、安装需要超级用户权限的应用,如Xposed框架,以及进行性能优化等。然而,Root也...

    基于Android考试系统软件开发设计实用文档doc.doc

    2. Android SDK安装及系统设置:SDK(Software Development Kit)包含了开发Android应用程序所需的工具和库。解压SDK后,需要配置环境变量PATH,使得开发者可以在命令行中直接使用SDK工具。对于不同操作系统,如...

    安卓调用系统闹钟及获取所有软件信息.zip

    在安卓平台上,调用系统闹钟以及获取所有软件信息是两个常见的操作,它们涉及到Android系统的API使用和权限管理。下面将详细讲解这两个知识点。 一、安卓调用系统闹钟 在Android中,我们可以使用AlarmManager类来...

    基于Android考试系统软件开发设计.doc

    《基于Android考试系统软件开发设计》的文档主要探讨了在移动互联网时代,特别是在Android操作系统盛行的背景下,如何进行考试系统软件的开发。该系统旨在利用Android平台的优势,为用户提供便捷的在线考试服务。 ...

    商淘软件B2B2C多用户商城系统 v2.1.1.zip

    系统拥有PC、手机WAP、微商城、安卓APP、苹果APP、微信小程序,六端合一,六端互通,并有无缝对接的开源IM客服系统,真正实现全网营销,极其适合企业及个人快速上线商务平台。 系统代码清晰易懂,大量的可视化报表...

    安卓软件测试笔记

    确保手机已通过ADB(Android Debug Bridge)正确连接。在命令行中,你应该先切换到Monkeyrunner的目录,然后尝试运行`monkeyrunner XXX.py`。如果遇到错误,可能是字符编码问题。在这种情况下,解决方法是在开始运行...

Global site tag (gtag.js) - Google Analytics