Android 手机卫士(9)安装从服务器端下载好的APK

安装下载到指定位置的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);

よろしくお願いします。

你可能感兴趣的:(Android-手机卫士)