我在Android下载二进制文件问题 和以编程方式在Android上安装应用程序的帮助下做到了这一点 .
我想立即进行自动更新和自动安装.它是本地的,所以它是非市场应用.
这是我的代码:
public void Update(String apkurl){
try {
URL url = new URL(apkurl);
HttpURLConnection c = (HttpURLConnection) url.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
String PATH = Environment.getExternalStorageDirectory() + "/download/";
File file = new File(PATH);
file.mkdirs();
File outputFile = new File(file, "app.apk");
FileOutputStream fos = new FileOutputStream(outputFile);
InputStream is = c.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = is.read(buffer)) != -1) {
fos.write(buffer, 0, len1);
}
fos.close();
is.close();//till here, it works fine …Run Code Online (Sandbox Code Playgroud) 我试图默默安装apk到系统中.我的应用程序位于/ system/app并成功授予权限"android.permission.INSTALL_PACKAGES"
但是我找不到任何地方如何使用此权限.我试图将文件复制到/ data/app并没有成功.我也试过使用这段代码
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(
Uri.parse("file:///sdcard/app.apk"),
"application/vnd.android.package-archive");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但是此代码打开标准安装对话框.如何在没有root的情况下以静默方式安装app android.permission.INSTALL_PACKAGES?
PS我正在编写一个应用程序,它会在第一次启动时将许多来自文件夹的apks安装到系统中(替换安装向导).我需要它来使固件更轻.
如果您认为我正在编写病毒:所有程序都安装在/ data/app中.权限Install_packages只能授予位于/ system/app中的系统级程序或使用系统密钥签名.所以病毒无法到达那里.
如上所述http://www.mail-archive.com/android-porting@googlegroups.com/msg06281.html应用程序如果具有install_packages权限,则可以进行静默安装.此外,您不需要Install_packages权限来安装软件包.另外还有http://www.androidzoom.com/android_applications/tools/silent-installer_wgqi.html
我已经接受了一段时间了,这是不可能静默安装在Android的应用程序 - 也就是,有一个安装程序捆绑作为一个APK应用程序,而不提供标准操作系统安装提示,并通过应用程序安装活动去.但是现在我已经拿到了Appbrain快速Web安装程序的副本,它就是这样做的.
这怎么可能呢?:d
我正在学习Android编程,我想创建一个必须以root身份运行的应用程序.合乎逻辑的是在Android Manifest中添加root权限.
我在文档中看到了这个链接,特别注意到了FACTORY_TEST权限:
public static final String FACTORY_TEST自:API级别1
作为制造商测试应用程序运行,以root用户身份运行.仅在设备以制造商测试模式运行时可用.常量值:"android.permission.FACTORY_TEST"
这是最好的方式吗?
如果无法使用SDK,我该如何使"root"应用程序工作?
AppBrain有一个很棒的新应用程序,可让您使用Web浏览器自动在手机上安装应用程序.类似于Chrome推送.在他们的情况下,他们正在使用它来让您在没有提示的情况下直接在手机上安装应用程序.Engadget有一个很好的视频演示他们的系统.
http://lifehacker.com/5582169/appbrain-upgrade-installs-android-apps-instantly-from-the-web
我的问题是:他们使用什么机制来避免在手机上询问提示并直接进行安装?
我问的原因是有几百个Android手机运行一些自定义软件,用户必须通过点击安装过程手动更新软件.理想情况下,我宁愿能够在不提示人的情况下进行推送更新(换取免费电话+服务,你必须运行软件,所以'你不应该这样做'不会使问题无效你是怎样做的).最大的问题是,如果你正在进行快速开发/测试,那么让每个人都达到合适的版本是一件痛苦的事情,这对人们来说很麻烦.
AppBrian听起来像是对这个问题的完美修复,但它是如何工作的?AppBrain快速安装程序要求的唯一权限是访问您的帐户和网络访问权限.现在,有关Jon Oberheide的REMOVE_ASSET和INSTALL_ASSET的有趣发展,他说使用GTalk服务来模仿无需安装的安装.有趣的是,AppBrian的FastWeb安装程序可以在2.01 Droid上运行,但不适用于2.2 Nexus One(可能最后一轮Froyo更新中的一个禁用了AppBrain对INSTALL_ASSET意图的访问). http://jon.oberheide.org/blog/2010/06/25/remote-kill-and-install-on-google-android/
任何人都可以对此有所了解吗?我知道市场正在进行自动更新,但我不确定这是否是一个可用的解决方法.我很好说'你需要点击安装一次',但有数百人浪费时间点击"确定"是一种浪费.
我个人认为,谷歌应该在未来使用设备管理员功能为企业用户提供支持.如果我使用Android并且可以轻松上演并让人们了解应用程序,它将非常有用.