Android对于静默安装和卸载
在一般情况下,Android系统安装apk会有一个安装界面,用户可以单击确定或取消apk设备。
但在实际的项目需求中,有一种需求。就是希望apk在后台安装(不出现安装界面的提示),这样的安装方式称为静默安装。
Android实现静默安装的方式有非常多,这里仅仅介绍一种比較简单易理解的方法,就是调用Android未公开的API(installPackage)来实现。
以下通过一种简单的Demo来简单实现静默安装。界面例如以下:
当点击"静默安装"的button时。会在后台安装360手机卫士的apk。成功安装后,会弹出Toast提示成功安装。
首先须要再AndroidManifest.xml声明以下的权限:
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
然后主要实现的代码例如以下:
从上面能够看出。事先须要再SD卡上放一个须要静默安装的apk(没有检測这个apk是否存在,仅仅是简单实现)
上面的方法中涉及到了PackageInstallObserver类。实现代码例如以下:
代码部分已经基本实现完毕。可是在eclipse里面,这个Demo是编译只是的,由于installPackage这个API没有公开,在上层是调用不到的,所以,须要在Android源代码的环境下编译。在Demo根文件夹下新建Android.mk文件,内容例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hpbmVmbG93ZXJz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
Android.mk的写法有固定的格式和写法。假设不会写,能够參考Android源代码中个系统应用mk文件的写法。
以下简介下mk几个选项的含义:
以下的头和尾的写法都是固定的:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
......
LOCAL_SRC_FILES := $(call all-subdir-java-files)
......
include $(BUILD_PACKAGE)
依照上面方法,有的人可能会出现以下的这个错误:
java.lang.SecurityException: Neither user 10034 nor current process has android.permission.INSTALL_PACKAGES.
这是由于仅仅有系统应用才有android.permission.INSTALL_PACKAGES这个权限。出现这个问题的解决办法是,没有将自己的应用放在Android源代码packages/app文件夹下就直接进行模块编译,这样编译出来的APK不是系统应用,没有系统的权限。解决问题有两种方法:
1. 将自己的应用放在packages/app文件夹下再进行模块编译
2. 直接安装out/target/product/generic/obj/APPS/应用名_intermediates/Package.apk.unaligned这个APK,就不会有这个问题。
版权声明:本文博主原创文章。博客,未经同意不得转载。
Android对于静默安装和卸载的更多相关文章
- Android实现静默安装与卸载
一般情况下,Android系统安装apk会出现一个安装界面,用户可以点击确定或者取消来进行apk的安装. 但在实际的项目需求中,有一种需求,就是希望apk在后台安装(不出现安装界面的提示),这种安装方 ...
- android 实现静默安装、卸载
方法1:[使用调用接口方法,由于安装卸载应用程序的部分API是隐藏的,所以必须下载Android系统源码,在源码下开发并编译之后使用MM命令编译生成APK文件] import java.io.File ...
- Android随笔之——静默安装、卸载
随笔之所以叫随笔,就是太随意了,说起来,之前的闹钟系列随笔还没写完,争取在十月结束之前找时间把它给写了吧.今天要讲的Android APK的静默安装.卸载.网上关于静默卸载的教程有很多,更有说要调用隐 ...
- Android的静默安装
原文 Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安 ...
- Android apk的安装、卸载、更新升级(通过Eclipse实现静默安装)
一.通过Intent消息机制发送消息,调用系统应用进行,实现apk的安装/卸载 . (1) 调用系统的安装应用,让系统自动进行apk的安装 String fileName = "/data/ ...
- Android_实现静默安装和卸载应用
转:http://www.cnblogs.com/ondream/archive/2012/04/13/2446138.html 前段时间做了一个批量安装卸载应用程序的小应用,由于安装卸载应用程序的部 ...
- android apk静默安装
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/47803149 之前有很多朋友都问过我,在Android系统中怎样才能实现静默安装呢 ...
- innosetup的静默安装与卸载
静默安装,就是减少程序与用户的交互,一站式的安装过程(一气呵成) 1. 静默安装参数 innosetup的静默安装是通过参数来控制的 1.1. /silent ...
- android程序的安装与卸载
Android android在安装应用程序与卸载应用程序时都会发送广播,安装应用程序成功时会发送android.intent.action.PACKAGE_ADDED广播,可以通过intent.ge ...
随机推荐
- oracle 包,函数,过程,块的创建和执行及在java中执行(转)
SQL> create or replace procedure sp_guocheng1 is--如果有这个名字就替换 2 begin--执行部分 3 insert into guoc ...
- 学派Delphi方法(推荐)——————————【Badboy】
Delphi是一个新的可视化编程环境, 提供了一种方便.快捷的Windows使用顺序开发工具. 它使用了MicrosoftWindows图形用户界面的很多先进特性和设计思想. 本文就给读者引见学Del ...
- [转载][NAS] 使用win8的“存储池”功能~
之前自己用DQ77KB搭建一个小存储系统(帖子链接:http://www.chiphell.com/thread-567753-1-1.html),一直使用intel主板带的软RAID功能构建RAID ...
- A Mathematical Curiosity
A Mathematical Curiosity Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/O ...
- 【原创】leetCodeOj --- Merge k Sorted Lists 解题报告
题目地址: https://oj.leetcode.com/problems/merge-k-sorted-lists/ 题目内容: /** * Definition for singly-linke ...
- char *详细指针
我前段时间写的char*和char[]差额.今char*做一个更深入的了解 1:char像指针和其他指针,也定义一个地址,例如int*它定义了一个堆栈,4字节,char*之,现在写一段代码 #incl ...
- Harry Potter and the Prisoner of Azkaban
称号:Harry Potter and the Prisoner of Azkaban 作者:J.K. Rowling 篇幅: 448页 蓝思值:880L 用时: 11天 工具: 有道词典 [ ...
- jQuery
代码的层定位滑动动画效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- c# winform panel 流式布局 panel块可自动排列
代码下载地址 http://download.csdn.net/detail/simadi/7677053
- 从Java到C++——从union到VARIANT与CComVariant的深层剖析
我第一次用VARIANT和CComVariant的时候全然不明确它是怎么回事,为它什么数据类型都能够存放.什么数据都能够被能够初始化?里面究竟是怎么实现的?感觉又奇妙又迷惑!我们在上一节中讲了unio ...