如何使用PackageInstaller类安装apk?

时间:2017-03-05 19:02:51

标签: java android apk

大家好

我的问题

我需要从输入流安装apk,而PackageInstaller类是唯一一个允许我这样做的人,但是我当前的代码不起作用,它给了我典型的错误“应用程序已停止”。我不知道失败的地方。我不知道错误发生在哪里。

代码

public static void installPackage(Context context, InputStream inputStream)
    throws IOException {
PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller();
int sessionId = packageInstaller.createSession(new PackageInstaller
        .SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL));
PackageInstaller.Session session = packageInstaller.openSession(sessionId);

long sizeBytes = 0;

OutputStream out = null;
out = session.openWrite("my_app_session", 0, sizeBytes);

int total = 0;
byte[] buffer = new byte[65536];
int c;
while ((c = inputStream.read(buffer)) != -1) {
    total += c;
    out.write(buffer, 0, c);
}
session.fsync(out);
inputStream.close();
out.close();

// fake intent
IntentSender statusReceiver = null;
Intent intent = new Intent(context, SomeActivity.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
        1337111117, intent, PendingIntent.FLAG_UPDATE_CURRENT);

session.commit(pendingIntent.getIntentSender());
session.close();

}

可能相关的信息:

  • 我使用的是一个版本为android 4.1.2
  • 的模拟器
  • 我的应用程序向SuperUsuario(Root)请求权限,因此该设备具有SuperUsuario的权限

如果您知道如何实现我的目标,我会很高兴听到它。非常感谢

0 个答案:

没有答案