Android 没有root状态下的静默安装
来源:互联网 发布:小程序cms系统源码 编辑:程序博客网 时间:2024/05/17 05:17
最近项目有个需求,要求apk启动的时候需要安装一个assets里面的一个apk。首先是先将assets里面的apk读取到sdcard中,然后进行安装,作为一个插件来调用现在写了个demo进行静默安装。下面是本人直接在sdcard中放了一个apk进行测试使用
费话不多说了,直接上代码:
package com.example.shelldemo;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button bt1 = (Button) findViewById(R.id.button1);Button bt2 = (Button) findViewById(R.id.button2);bt1.setOnClickListener(this);bt2.setOnClickListener(this);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@SuppressLint("SdCardPath")@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button1: //安装apk,filePath为apk文件路径,如/mnt/sdcard/ApiDemos.apk String result = execCommand("pm","install","-f","/mnt/sdcard/myDB/LbsTree.apk"); Toast.makeText(MainActivity.this, "安装结果:"+result, Toast.LENGTH_LONG).show(); break;case R.id.button2://卸载apk,packageName为包名,如com.example.android.apis String result1 = execCommand("pm","uninstall", "com.qihoo360.mobilesafe"); Toast.makeText(MainActivity.this, "卸载结果:"+result1, Toast.LENGTH_LONG).show(); break;default:break;}}/* * m命令可以通过adb在shell中执行,同样,我们可以通过代码来执行 */ public static String execCommand(String ...command) { Process process=null; InputStream errIs=null; InputStream inIs=null; String result=""; try { process=new ProcessBuilder().command(command).start(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int read = -1; errIs=process.getErrorStream(); while((read=errIs.read())!=-1){ baos.write(read); } inIs=process.getInputStream(); while((read=inIs.read())!=-1){ baos.write(read); } result=new String(baos.toByteArray()); if(inIs!=null) inIs.close(); if(errIs!=null) errIs.close(); process.destroy(); } catch (IOException e) { result = e.getMessage(); } return result; } }
注意:在没有root状态写需要在AndroidManifest.xml中加入系统权限android:sharedUserId="android.uid.system",需要安装的apk也必须写入系统权限。
写入权限使用eclipse直接加入之后进行编译或者使用工具都行。
静默安装demo下载
apk加入权限工具包
0 0
- Android 没有root状态下的静默安装
- android root权限下静默 安装\卸载
- Android-Root静默安装
- Android Root权限静默安装
- android 无需root静默安装
- Android Root权限静默安装
- Android Root权限静默安装
- Android静默安装(需root)
- Android 无需root实现apk的静默安装
- Android 无需root实现apk的静默安装
- Android 无需root实现apk的静默安装
- Android无需root实现apk的静默安装
- Android下的静默安装代码
- Android系统Root与静默安装
- Android系统Root与静默安装
- 【Android】系统Root与静默安装
- Android系统Root与静默安装
- android 非root实现静默安装
- 为什么用 ping 命令计算目标主机 MTU 时,缓冲区大小要减掉 28 字节,才是真正的MTU值?
- 用JAVA打印出一个‘*’号金字塔,下面是源码
- 友盟(四)消息推送
- Rendering fast with GDI+ - What to do and what not to do!
- linux grep命令详解
- Android 没有root状态下的静默安装
- 哎呀不得了!我会用android获取远程jsone数据了!
- android进阶之自定义阴影边框
- 第三十五篇:Win8.1中ucx01000驱动的符号列表
- ubuntu下lamp环境的搭建及phpmyadmin的安装配置
- linux awk命令详解
- cocos2d-x常见的49种动作详解
- Kafka使用及开发概要(转载)
- 教你写单例