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>
以上所述就是本文的全部内容了,希望大家能够喜欢。