【发布时间】:2016-07-21 10:09:44
【问题描述】:
我有一个应用程序,它通过更改版本代码远程更新为新版本。从后端推送更新,手机使用 adb OTA 客户端更新 apk。
OTA 更新完成后,我需要以编程方式使用应用程序将状态发送到后端。
我可以使用实际接收包更改或删除相关意图操作的启动器来执行此操作,然后启动主应用程序。然后应用程序将 OTA 更新状态发送到后端,无需任何用户交互。 这是示例代码。 在启动器应用清单中:
<receiver android:name=".receivers.PackageChangedReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<action android:name="android.intent.action.PACKAGE_CHANGED" />
<data android:scheme="package"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
这里是接收器:
@Override
public void onReceive(Context context, Intent intent) {
String packageName=intent.getData().getEncodedSchemeSpecificPart();
if(packageName.contains(context.getString("packagename")))
context.startActivity(new Intent(context, MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK));
}
现在我的问题是,在 OTA 更新后,我如何才能执行相同的操作,例如启动主应用程序并仅使用主应用程序发送 OTA 更新状态,而无需在应用程序中进行任何启动器和用户交互?
【问题讨论】:
-
我不明白你的问题。你说你已经在做这些事情,然后你问怎么做?请详细说明您在做什么和不做什么,但需要帮助。
-
@DavidWasser 是的,我可以使用像启动器应用程序这样的第三方应用程序来做到这一点,该应用程序实际上负责接收主应用程序包更改广播状态并将其发送到后端。我的问题是我可以在没有任何第三方应用程序帮助的情况下做同样的事情吗?仅使用我的主应用程序。
标签: android broadcastreceiver auto-update android-launcher ota