安卓系统入门手机系统怎么重装

Android如何安装系统应用,及自己增加安装系统应用的接口
根据SIM卡安装系统应用
1:如何安装系统应用,apk放在system/app系统分区下面。
2:根据SIM卡的归属国家选择性的安装应用。
一:本人使用方法:
在开机的服务里面添加接口(PackageManagerService.java),检测到SIM卡的信息调用该接口。
下面是具体的方法:
系统服务PackageManager服务调用的是aidl接口,所以添加接口要添加两个地方,一个是IpackageManager.aidl,还有一个是PackageManagerService.java里面添加接口。下面在PackageManagerService.java里面添加的接口
private static String[] mAddedApks = { "HandwritePack.apk", "PinyinPack.apk",
"ChtPack_.apk", "TouchPal.apk" };
public String[] getApks(){
return mAddedA
public void scanApkAndInstallAll(){
File systemAppDir = new File(Environment.getRootDirectory(), "app");
for (String appName : mAddedApks) {
File installApp = new File(systemAppDir, appName);
if(!installApp.exists()){
String addedPackage =
int addedAppId = -1;
int[] addedUsers =
* if (!isPackageFilename(installApp)) { // Ignore entries which are
* not apk' }
// Set flag to monitor and not change apk file paths when
// scanning install directories.
int scanMode = SCAN_MONITOR | SCAN_NO_PATHS | SCAN_UPDATE_TIME;
int flags = (PackageParser.PARSE_IS_SYSTEM
| PackageParser.PARSE_IS_SYSTEM_DIR | PackageParser.PARSE_CH
if (mNoDexOpt) {
scanMode |= SCAN_NO_DEX;
synchronized (mInstallLock) {
PackageParser.Package pkg = scanPackageLI(installApp, flags
| PackageParser.PARSE_MUST_BE_APK, scanMode,
System.currentTimeMillis(), UserHandle.ALL);
// Don't mess around with apps in system partition.
if (pkg == null 1547
&& (flags & PackageParser.PARSE_IS_SYSTEM) == 0
&& mLastScanError == PackageManager.INSTALL_FAILED_I
NVALID_APK) {
// Delete the apk
installApp.delete();
if (pkg != null) {
* TODO this seems dangerous as the package may have changed
* since we last acquired the mPackages lock.
synchronized (mPackages) {
updatePermissionsLPw(
pkg.packageName,
pkg.permissions.size() > 0 ? UPDATE_
PERMISSIONS_ALL
addedPackage = pkg.applicationInfo.packageN
addedAppId = UserHandle.getAppId(pkg.applicationInfo.uid);
addedUsers = sUserManager.getUserIds();
synchronized (mPackages) {
mSettings.writeLPr();
if (addedPackage != null) {
Bundle extras = new Bundle(1);
extras.putInt(Intent.EXTRA_UID, addedAppId);
sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, addedPackage,
extras, null, null, addedUsers);
public void scanApkAndInstall(String apkName) {
File systemAppDir = new File(Environment.getRootDirectory(), "app");
File installApp = new File(systemAppDir, apkName);
if (!installApp.exists()) {
String addedPackage =
int addedAppId = -1;
int[] addedUsers =
* if (!isPackageFilename(installApp)) { // Ignore entries which are not
* apk' }
// Set flag to monitor and not change apk file paths when
// scanning install directories.
int scanMode = SCAN_MONITOR | SCAN_NO_PATHS | SCAN_UPDATE_TIME;
int flags = (PackageParser.PARSE_IS_SYSTEM
| PackageParser.PARSE_IS_SYSTEM_DIR | PackageParser.PARSE_CHATTY);
if (mNoDexOpt) {
scanMode |= SCAN_NO_DEX;
synchronized (mInstallLock) {
PackageParser.Package pkg = scanPackageLI(installApp, flags
| PackageParser.PARSE_MUST_BE_APK, scanMode,
System.currentTimeMillis(), UserHandle.ALL);
// Don't mess around with apps in system partition.
if (pkg == null
&& (flags & PackageParser.PARSE_IS_SYSTEM) == 0
&& mLastScanError == PackageManager.INSTALL_FAILED_INVALID_A
// Delete the apk
installApp.delete();
if (pkg != null) {
* TODO this seems dangerous as the package may have changed
* since we last acquired the mPackages lock.
synchronized (mPackages) {
updatePermissionsLPw(pkg.packageName, pkg,
pkg.permissions.size() > 0 ? UPDATE_PERMISSI
addedPackage = pkg.applicationInfo.packageN
addedAppId = UserHandle.getAppId(pkg.applicationInfo.uid);
addedUsers = sUserManager.getUserIds();
synchronized (mPackages) {
mSettings.writeLPr();
if (addedPackage != null) {
Bundle extras = new Bundle(1);
extras.putInt(Intent.EXTRA_UID, addedAppId);
sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, addedPackage,
extras, null, null, addedUsers);
scanApkAndInstallAll()是安装预先放在system/app里面的文件,安装为系统app,而不是普通应用。
scanApkAndInstall(String apk),安装system/app下面的其他的文件。
IPackageManager.aidl文件里面添加对应的接口(如果你想开放该接口)。
void scanApkAndInstall(String apkName);
void scanApkAndInstallAll();
二:下面我们看看APK安装过程:
Android应用安装有如下四种方式:
1.系统应用安装---开机时完成,没有安装界面--------->>重要:既然我们需要选择安装,所以第一次开机就不需要安装某些APK(以后检测到SIM卡在安装)
2.网络应用安装---通过market应用完成,没有安装界面。
3.ADB工具安装---没有安装界面。 --------->其实adb push到/system/app,system/priv-app的时候执行了安装动作,只是没有界面。
4.第三方应用安装---通过SD卡里的APK文件安装,有安装界面,由
packageinstaller.apk应用处理安装及卸载过程的界面。
应用安装的流程及路径
应用安装涉及到如下几个目录:
system/app ---------------系统自带的应用程序,获得adb root权限才能删除
---------------用户程序安装的目录。安装时把apk文件复制到此目录
data/data ---------------存放应用程序的数据
data/dalvik-cache--------将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik的可执行文件)
安装过程:
复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。
卸载过程:
删除安装过程中在上述三个目录下创建的文件及目录。
所以,为了避免开机的时候安装,我们需要过滤某些检测到SIM卡之后才安装的apk。我们在PackageManagerService.java的函数
private void scanDirLI(File dir, int flags, int scanMode, long currentTime)
里面过滤这些apk。
private boolean isContainsMyApks(String appName){
if(appName == null){
for(String app:mAddedPHICOMMApks){
if(app.equals(appName)){
for (i = 0; i < files. i++) {
if (dir.getPath().equals(mSystemAppPath)
&& isContainsMyApks(files[i])) { } else {
File file = new File(dir, files[i]);
if (!isPackageFilename(files[i])) {
PackageParser.Package pkg = scanPackageLI(file, flags .............下面的省略
三:使用这些接口。
我们在接收到SIM卡为ready的广播后,调用这个方法安装系统应用。我在settings里面写的接收广播。Manifests.xml里面加上
package com.android.
import android.app.S
import android.content.BroadcastR
import android.content.C
import android.content.I
import android.content.pm.IPackageM
import android.os.RemoteE
import android.os.ServiceM
import android.os.SystemP
import android.telephony.TelephonyM
import android.util.L
* This doucment was added by haiyong.liu to install system/app if SIM iccid is from taiwan .
public class SIMStateReceiver extends BroadcastReceiver {
private static final String PERSIST_SYS_SIMAPK_INSTALL = "persist.sys.simapkinstall";
private static boolean isInstalling =
public void onReceive(Context context, Intent intent) {
if (intent.getAction()
.equals("android.intent.action.SIM_STATE_CHANGED")) {
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Service.TELEPHONY_SERVICE);
int state = tm.getSimState();
switch (state) {
case TelephonyManager.SIM_STATE_READY:
Log.e("haiyong.liu", "SIM_STATE_READY");
if (!isInstalling) {
isInstalling =
installPHICOMMApksAndOther(tm);
private void installPHICOMMApksAndOther(TelephonyManager tm) {
String propSimString = SystemProperties.get(PERSIST_SYS_SIMAPK_INSTALL);
String iccidString = tm.getSimSerialNumber();
if (iccidString.startsWith("8988")
&& (propSimString == null || propSimString.equals(""))) {
IPackageManager iPackageManager = IPackageManager.Stub
.asInterface(ServiceManager.getService("package")); 注意该接口的使用,因开机注册的时候使用的是"package"
iPackageManager.scanPHICOMMApkAndInstallAll();
} catch (RemoteException e) {
Log.e("haiyong.liu", "SIMStateReceiver RemoteException:" + e);
SystemProperties.set(PERSIST_SYS_SIMAPK_INSTALL, "installed");
} else if (propSimString.equals("installed")) {
这些,为了避免开机重复安装,我们使用Systemproperties.set()往属性里面添加一个系统&#20540;,如果安装,则写入&#20540;,开机的时候读取这个&#20540;,避免重复安装。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。关注本文的用户购买了
$Global.subContentByLen(${item.content}, 110)
$Global.subContentByLen(${item.content}, 110)
$Global.subContentByLen(${item.content}, 110)
$Global.subContentByLen(${item.content}, 110)
$Global.subContentByLen(${item.content}, 110)
你可能还喜欢
你可能需要
| 使用条款 |
| 诚聘精英 |
北京皓辰网域网络信息技术有限公司. 版权所有
北京市公安局海淀分局网监中心备案编号:
IT168解决你所有问题安卓系统怎么下载安装软件
内容为广告/垃圾,我要举报!
特聘专家具有协助内容审核的特权
举报后内容将不能在前台展示
错乱举报会导致该权利被剥夺
选择举报原因&
我刚买个android的手机,可是不知道怎么下载安装软件,我是头一次使用android系统。希望各位大侠教教我如何下载安装软件到手机里面!
已有3条答案
&& &安卓系统下载那装软件很简单,你下个豌豆荚手机精灵或是91手机助手软件安装到电脑上,在手机设置里面找到应用程序,选择开发进入后把USB调试点上勾就可以了,这时候你在连接电脑打开刚才安装的软件。选择应用游戏管理,你查找你要的软件点击安装就可以了!豌豆荚手机精灵豌豆荚手机精灵&& &豌豆荚手机精灵是手机第三方开发的PC套件,主要用来下载手机软件和管理手机内的软件。可以安装也可以删除,同时也可更新手机内的软件!这个软件现在还是非常的稳定和强大的,同时还可以下载视频和音乐。还有电子图书等功能。目前豌豆荚手机精灵只支持安卓手机系统。91手机助手&& &91手机助手和豌豆荚是一样的软件。功能上也非常相似,但是他不仅支持安卓系统,还支持IOS系统。这样就更增加了它的使用率。&& &我在家一般都是用豌豆荚手机精灵的,因为这款软件比较稳定。91手机助手我也用过,但是稳定性不好。长时间连接手机会出现报错和自动关闭现象。所以还是推荐楼主下载豌豆荚吧!& & 上面的问题可能还没有让大家认可了解到这个问题,所以我在下面帮楼主找到了更多的相关问题,楼主可以参考一下看看能不能帮助楼主解决上面还没有解决的问题吧,希望能够帮助到你!===============================================================更多你可能关注的问题:怎么安装apk文件Android(安卓)系统怎么把软件安装到内存卡上?安卓系统怎么下载安装软件安卓系统必装软件都有哪些?Android手机怎么卸载软件?更多关于手机的问题欢迎登陆论坛参与互动:希望以上内容能够帮助到你!
选择举报原因&
赞+1(37)
下载一个百度手机助手就行了
选择举报原因&
你首先找找看见那里有个搜索就打个网址
去了这个网址之后就开始你自己想搜什么就搜什么
如果你想安装软件到手机里面就在设置那里
找软件的那个信息就按一下那里有软件的个人资料就移至手机就行了
你还可以下载360安全卫士
那里有软件管理
你看见那里有软件搬家就按
然后你想安装那里就安装那里
选择举报原因&
快速简答--编辑问题发送微博@ZOL问答堂
没找到想要的答案?那就登录提问吧后使用快捷导航没有帐号?
注册成为酷七会员,享受更多独家内容。
才可以下载或查看,没有帐号?
各位大神,本人突然想在自己的 pro3 中安装一个安卓系统,让自己的苏菲3有双系统,但是不知道怎么办?
哪位大神能教我?
如果有教程就更好了。
急求···
发帖奖励(回帖人越多,所获奖励越高)
Lv12 骨灰软粉
原生的不行,,,,可以用靠谱助手虚拟
怎么弄?具体的啊&
Lv5 初级软粉, 积分 887, 距离下一级还需 393 积分
Lv5 初级软粉
原生的不行,,,,可以用靠谱助手虚拟
怎么弄?具体的啊
百度靠谱助手安装上就可以了&
Lv6 中级软粉, 积分 1354, 距离下一级还需 646 积分
Lv6 中级软粉
这个应该没有人去折腾,呵呵。买个安卓手机不就得了。安卓系统就那个模样,不晓得你要体验什么。
Lv12 骨灰软粉
怎么弄?具体的啊
百度靠谱助手安装上就可以了
Lv4 见习软粉, 积分 525, 距离下一级还需 115 积分
Lv4 见习软粉
手持核弹有卫星定位系统,突然想给核弹上弄个瞄准镜?
酷七技术组
不懂,没沙发
Lv5 初级软粉, 积分 698, 距离下一级还需 582 积分
Lv5 初级软粉
靠谱助手,全自动安装,还可以触屏,很不错
已经安装·确实不错·&
Lv4 见习软粉, 积分 541, 距离下一级还需 99 积分
Lv4 见习软粉
Lv5 初级软粉, 积分 887, 距离下一级还需 393 积分
Lv5 初级软粉
靠谱助手,全自动安装,还可以触屏,很不错
已经安装·确实不错·
Lv5 初级软粉, 积分 887, 距离下一级还需 393 积分
Lv5 初级软粉
系统好办,驱动不好办&
Lv3 即将转粉, 积分 314, 距离下一级还需 46 积分
Lv3 即将转粉
下bluestacks 或者上虚拟机
Lv4 见习软粉, 积分 541, 距离下一级还需 99 积分
Lv4 见习软粉
yzw900501 发表于
系统好办,驱动不好办
Lv5 初级软粉, 积分 1108, 距离下一级还需 172 积分
Lv5 初级软粉
装x86安卓,我自己就是,安卓,8.1双系统
怎么装?求教???&
Lv5 初级软粉, 积分 887, 距离下一级还需 393 积分
Lv5 初级软粉
装x86安卓,我自己就是,安卓,8.1双系统
怎么装?求教???
为何要弄安卓系统?那些分辨率应用很好用吗&
Lv6 中级软粉, 积分 1730, 距离下一级还需 270 积分
Lv6 中级软粉
怎么装?求教???
为何要弄安卓系统?那些分辨率应用很好用吗
(Lv5 初级软粉)
最专业的超人气windows10论坛
广告投放:&
合作邮箱:&
公司地址:&北京市海淀区上地创业路17号
Powered by Discuz!安卓入门基础设置
安卓软件安装管理
安卓高手进阶
如何在电脑安装安卓手机驱动
要想通过电脑来安装软件,操作手机,则必须先安装手机驱动,目前来说安装驱动方式有3种,都比较简单,下面给大家做下介绍。第一种是EXE格式的驱动,下载驱动后双击根据提示安装驱动即可,这种没什么好说的。而很多手机是没有EXE格式的驱动的,这里主要讲解一下如何安装非EXE格式的驱动。
首先下载对应手机型号的驱动,可以到论坛去下载这些驱动/thread-.html,这里以HTC手机为例,其他的手机也是一样。下载驱动后解压,然后用数据线连接电脑和手机,会弹出新硬件的提示,一般驱动都会自动安装失败,所以我们就要手动安装驱动。
右键点击我的电脑,选择【管理】,然后点击左侧的【设备管理器】,(有的电脑可能点击我的电脑后就直接有设备管理器,直接选择设备管理器就可以了。)会看到有【Android Phone】一项上有感叹号,这个就是我们的手机设备。如下图
下面我们就要安装驱动了,右键点有感叹号的那项,选择【更新驱动程序软件】,然后点击【查找驱动程序软件】,选择一下刚才我们下载的驱动程序路径,点击下一步就可以自动安装驱动程序了,(这里需要说明一下,电脑系统是XP32位的,则选择XP_x86的,如果是XP64位的,则选择XP_x64,如果电脑系统是WIN7或者Vista,那么32位的,则选择Vista_x86,64位的则选择Vista_x64的),如下图
安装完毕后,点击关闭,然后可以看到刚才的【Android Phone】项上的感叹号已经没了,说明驱动已经安装好了。如下图
除了这2种外,还有一种更为简单的方式,就是使用手机助手来自动安装驱动,比较常用的手机助手有魔乐手机助手、豌豆荚手机助手、91手机助手、腾讯手机助手和360手机助手,这些百度搜一下,下载安装后,连接手机,根据提示就可以自动安装驱动了。}

我要回帖

更多关于 安卓手机 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信