因为你不能没有安装对话框或背景中安装APK安全原因。您可以使用root和Packagemanager在后台安装APK。
有几次尝试侦听应用程序的安装,因此您可以重新启动您的活动。一个是注册一个BroadcastReceiver,它监听应用程序的安装。
<receiver android:name=".PackageReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_CHANGED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="package" />
</intent-filter>
这个类,然后安装一个新包时被调用:
public class PackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// handle install event here
}
}
第二次尝试是有一个计时器,试图找到该应用程序的安装所有n秒。从另一个问题示例:
public class Example extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Put the package name here...
boolean installed = appInstalledOrNot("com.Ch.Example.pack");
if(installed) {
//This intent will help you to launch if the package is already installed
Intent LaunchIntent = getPackageManager()
.getLaunchIntentForPackage("com.Ch.Example.pack");
startActivity(LaunchIntent);
System.out.println("App already installed on your phone");
}
else {
System.out.println("App is not installed on your phone");
}
}
private boolean appInstalledOrNot(String uri) {
PackageManager pm = getPackageManager();
boolean app_installed = false;
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
app_installed = true;
}
catch (PackageManager.NameNotFoundException e) {
app_installed = false;
}
return app_installed ;
}
}
最后但并非最不重要的:如果你有APK和根,你可以使用shell命令来安装它:
pm install APKFile.apk
不,你不能从Play下载的APK您自己存储,您必须通过商店的用户界面,无论是在设备上的应用程序或Web界面。 – 2015-03-13 14:41:03