【发布时间】:2023-12-27 10:22:01
【问题描述】:
我最近刚刚在我的应用程序中添加了检查本地服务器上的更新的功能(此应用程序未在 Google Play 商店中发布。它将在内部使用,并且没有使用它的互联网连接。不要问。就是这样:))。我通过检查 SQL Server 中的某个表来跟踪更新,如果我的应用程序版本低于此表中指示的版本,我会从内部网站(仅限 LAN)下载新的 APK,然后安装 APK。我在设备中还有另一个应用程序可以监听 PACKAGE_ADDED 广播。我可以成功捕获广播。
问题是,安装后,广播接收器通过调用以下命令启动应用程序。
public class PackageInstalledBroadcastReceiver extends BroadcastReceiver {
private final String MY_PACKAGE_NAME = "com.company.packagename";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {
String packageName = intent.getData().getSchemeSpecificPart();
if (packageName.equalsIgnoreCase(MY_PACKAGE_NAME)) {
Intent i = new Intent();
i.setClassName(MY_PACKAGE_NAME, MY_PACKAGE_NAME + ".LoginActivity");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
}
}
但是应用启动需要很长时间。用户可能认为什么都没有发生,因此他/她可以通过单击应用程序的图标来手动启动应用程序。如果用户单击应用程序的图标,应用程序会立即启动。过了一会儿,广播接收器启动的活动也打开了。所以现在,我在同一个活动(LoginActivity)中得到了我的应用程序的两个实例。我可以说是这样,因为如果我从 LoginActivity 按设备上的返回键,我仍然会进入另一个 LoginActivity,如果我再次按返回键,我最终会出现在设备的桌面上。
【问题讨论】:
-
如果你广播意图打开你的应用程序 LoginActivity 那么你实际上是在打开或者你需要点击应用程序图标来打开应用程序。
-
Activity实际打开了,安装更新后打开大概需要15秒
-
您是否也尝试过其他设备
-
我在另一台设备上试过了,安装完成后应用就打开了。可能是其他设备的问题
标签: java android android-activity broadcastreceiver