java实现静默安装apk
静默安装就是偷偷的把一个应用安装到手机上,就是屏蔽确认框,通过反射
只能写个主要的代码,这个是在linux编译用到,因为静默安装需要调用系统服务,在源码下编译,我也是搞了好久
InstallActivity.java
packagecom.smart.Installback;
importjava.io.File;
//importcom.android.packageinstaller.R;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.content.Intent;
importandroid.content.pm.PackageInfo;
importandroid.content.pm.PackageManager;
importandroid.content.pm.PackageManager.NameNotFoundException;
importandroid.content.pm.IPackageInstallObserver;
importandroid.content.res.Resources;
importandroid.graphics.drawable.Drawable;
importandroid.net.Uri;
importandroid.os.Environment;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.util.Log;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.ProgressBar;
importandroid.widget.TextView;
publicclassInstallActivityextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
privateButtonbtn=null;
privateButtonbtn2=null;
privatefinalintINSTALL_COMPLETE=1;
finalstaticintSUCCEEDED=1;
finalstaticintFAILED=0;
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StringfileName=Environment.getExternalStorageDirectory()+"/UC.apk";
Uriuri=Uri.fromFile(newFile(fileName));
intinstallFlags=0;
PackageManagerpm=getPackageManager();
try{
PackageInfopi=pm.getPackageInfo("com.uc.browser",
PackageManager.GET_UNINSTALLED_PACKAGES);
if(pi!=null){
installFlags|=PackageManager.INSTALL_REPLACE_EXISTING;
}
}catch(NameNotFoundExceptione){
}
//StringinstallerPackageName=getIntent().getStringExtra(
//Intent.EXTRA_INSTALLER_PACKAGE_NAME);
PackageInstallObserverobserver=newPackageInstallObserver();
pm.installPackage(uri,observer,installFlags,"com.uc.browser");
}
privateOnClickListenerlistener2=newOnClickListener(){
publicvoidonClick(Viewv){
StringfileName=Environment.getExternalStorageDirectory()+"/UC.apk";ivate
Uriuri=Uri.fromFile(newFile(fileName));
intinstallFlags=0;
PackageManagerpm=getPackageManager();
try{
PackageInfopi=pm.getPackageInfo("com.uc.browser",
PackageManager.GET_UNINSTALLED_PACKAGES);
if(pi!=null){
installFlags|=PackageManager.INSTALL_REPLACE_EXISTING;
}
}catch(NameNotFoundExceptione){
}
//StringinstallerPackageName=getIntent().getStringExtra(
//Intent.EXTRA_INSTALLER_PACKAGE_NAME);
PackageInstallObserverobserver=newPackageInstallObserver();
pm.installPackage(uri,observer,installFlags,"com.uc.browser");
}
};
classPackageInstallObserverextendsIPackageInstallObserver.Stub{
publicvoidpackageInstalled(StringpackageName,intreturnCode){
Messagemsg=mHandler.obtainMessage(INSTALL_COMPLETE);
msg.arg1=returnCode;
mHandler.sendMessage(msg);
}
};
privateHandlermHandler=newHandler(){
publicvoidhandleMessage(Messagemsg){
switch(msg.what){
caseINSTALL_COMPLETE:
//Updatethestatustext
//Showtheokbutton
intcenterTextLabel;
DrawablecenterTextDrawable=null;
if(msg.arg1==SUCCEEDED){
}else{}
if(centerTextDrawable!=null){}
break;
default:
break;
}
}
};
}
main.xml
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > </LinearLayout>
以上所述就是本文的全部内容了,希望大家能够喜欢。