gpt4 book ai didi

android - 安装完成后强制打开android应用程序

转载 作者:行者123 更新时间:2023-11-29 01:24:38 27 4
gpt4 key购买 nike

我正在运行一个 android 应用程序,它是系统上唯一运行的应用程序,因此,当启动完成时,我启动该应用程序并防止用户出于任何原因退出它(这使我禁用了两个导航状态栏).

然后,为了实现对应用程序的更新,我查看是否有新的,如果有,我运行后台任务以使用 jsch 从 sftp 服务器下载新的更新。 ,当应用程序完成下载时,我使用 ACTION_VIEW intent 安装 apk:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/update_app.apk")), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

这里的问题是当安装完成时,出现默认的android屏幕:

enter image description here

这让用户可以选择完成 || 打开,并且确定如果用户选择完成,这将导致关闭窗口并且应用程序在更新时已经关闭,因此它将用户带到根本不受欢迎的系统UI。

请记住,我无法以编程方式打开应用程序,因为在安装更新时它会卸载旧版本,所以我必须执行两个我不知道如何实现的选项之一:

  1. 安装完成后强制默认打开应用。

  2. 更改系统安装完成屏幕或覆盖它的按钮操作。

最佳答案

我终于解决了这个问题,我在辅助应用程序中使用了以下接收器:

    <receiver
android:name="com.example.extraApp.InstallReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_INSTALL" />
<action android:name="android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package"/>
</intent-filter>
</receiver>

并且这个应用程序一直在运行,它只包含那个接收器,它在触发后(当原始应用程序更新时),我使用包名称来启动原始应用程序:

public class InstallReceiver extends BroadcastReceiver{    
@Override
public void onReceive(Context context, Intent intent) {
try {
Intent new_intent = context.getPackageManager().getLaunchIntentForPackage("com.example.updaterjschtest");
context.startActivity(new_intent);
} catch (Exception e) {
e.printStackTrace();
}
}
}

关于为什么我确实使用另一个辅助应用程序作为监听器,那是因为 BroadcastReceiver will never work unless the app is launched at least once ,这不适用于更新后直接通过原始应用程序。

关于android - 安装完成后强制打开android应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34706052/

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