安装下载到指定位置的apk.
注意事项:
1.包名要一致
2.签名要一致
【服务器端apk(C:\Eclipse\Pro\KeySafeManager_KeyStore)
本地是debug apk(C:\Users\app\.android\debug.keystore)】
直接编译生成的apk是使用系统默认的签名文件生成的。
服务器端肯定是用的自己的签名文件生成的apk。
若是签名不一致,安装的时候会提示签名不一致!
安装界面想必大家都很熟悉。
想一想:如何安装一个apk?
若是提示用户先删除本地旧版本,至少一半的用户不会再使用这个app了!
如何解决呢?
覆盖安装【所以签名和包名要一致】
提示安装也属于activity,那么我们就可以采用隐式启动来安装apk!
首先,在清单文件中配置如下:
<activity
android:name="com.jxy.safemanager.activity.PackageInstallerActivity"
android:configChanges="orientation|keyboardHidden" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="content" />
<data android:scheme="file" />
<data android:mimeType="application/vnd.android.package-archive" />
</intent-filter>
</activity>
然后在java中启动activity
Intent intent = new Intent("android.intent.action.VIEW");
intent.addCategory("android.intent.category.DEFAULT");
// 文件作为数据来源
// intent.setData(Uri.fromFile(file)); //apk下载后的也属于file类
// 设置安装的类型
// intent.setType("application/vnd.android.package-archive");
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
よろしくお願いします。