gpt4 book ai didi

java - 使用 Android PackageInstaller 时如何获取状态?

转载 作者:行者123 更新时间:2023-12-05 00:05:39 32 4
gpt4 key购买 nike

编辑:我添加了 API 级别 29 或更高版本的解决方案。但是,这并不能解决我的问题。
如果有人提出 API 级别 28 或更早的方法,我将不胜感激。
原始问题:
我正在使用以下代码安装 apk:

final int sessionId = packageInstaller.createSession(params);
PackageInstaller.Session session = packageInstaller.openSession(sessionId);
OutputStream out = session.openWrite("COSU", 0, -1);
FileInputStream in = new FileInputStream(apkPath);
byte[] buffer = new byte[4*1024];
int c;
while ((c = in.read(buffer)) != -1) {
out.write(buffer, 0, c);
}
session.fsync(out);
in.close();
out.close();

packageInstaller.registerSessionCallback(new PackageInstaller.SessionCallback() {
@Override
public void onCreated(int sessionid) {
Log.i(TAG, "onCreated: installer created");
}

// ... other handlers

@Override
public void onFinished(int sessionid, boolean success) {
if(sessionid != sessionId)
return;

if(success)
{
Log.i(TAG, "onFinished: installation successfull");
}
else
{
Log.i(TAG, "onFinished: installation failed");
}
}
});

session.commit(PendingIntent.getBroadcast( common.appContext, sessionId,
new Intent("android.intent.action.MAIN"), 0).getIntentSender());
它按我的预期工作。但是,我想知道它失败的原因。
onFinished 处理程序上的“成功”参数只是一个 boolean 值,并不能说明太多。阅读 documentation ,我知道有可以用于此的状态代码(如 STATUS_FAILURE_STORAGE、STATUS_FAILURE_INCOMPATIBLE ...),但我找不到说明如何在失败时获取状态代码的文档或示例。
注意:这在没有 UI 的情况下工作,因此我不能使用使用可见 Activity 的示例。

最佳答案

对于 api 级别 29
getStagedSessionErrorCode()getStagedSessionErrorMessage()添加了功能。因此,您可以执行以下操作:

Log.e(TAG, packageInstaller.getSessionInfo(installerSessionId).getStagedSessionErrorMessage());

关于java - 使用 Android PackageInstaller 时如何获取状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58392880/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com