【问题标题】:when android device onopen, run application当android设备打开时,运行应用程序
【发布时间】:2016-12-22 14:17:25
【问题描述】:

我有 android 包更新应用程序。有时我们会发布新的 android 版本或错误修复包。然后用户下载包并加载包。我们还发布了强制更新,并下载并加载了包。 它必须使用广播和服务与服务器通信。

如果应用程序之前运行一次,它可以正常工作。但是我们需要一些关于设备的信息来报告一些事情。如果用户不运行应用程序,服务将无法工作。所以应用程序无法正常工作。

为此,我们需要在安卓设备打开后立即运行我们的应用程序。所以服务将是活跃的。并且应用程序正常运行。

更新包来自不同的公司。他们应该在加载包后立即更改包以启动我的应用程序吗?

【问题讨论】:

标签: android package version updates ota


【解决方案1】:

如果您询问是否可以在下载后立即启动任何服务,那么这是不可能的。当应用程序从未启动时,你怎么能期望你的代码运行?

编辑:

在设备启动后启动应用程序所能做的就是在清单中设置一个带有意图过滤器的接收器。

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service
        android:name=".blablaService"
        android:enabled="true"/>

    <receiver android:enabled="true" android:name=".BootUpReceiver"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">

        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
</application>

你还需要一个BroadcastReceiver,所以将这个类添加到你的源中。

public class BootUpReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent i = new Intent(context, MainActivity.class);  //MyActivity can be anything which you want to start on bootup...
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }

}

我不知道这是否也适用于更新设备,但这是可能的。这将在设备启动时弹出应用程序。

我也想知道,是否真的需要在设备更新后立即执行此操作?您不能在应用启动后检查 Android 版本。然后将此版本保存到 sharedPreferences。下次运行时,将当前版本与存储的版本进行比较。如果不一样,请更新您的软件包。这可能是一种替代解决方案。

【讨论】:

  • 我知道这种情况。我不希望我的服务能够运行。我的问题是在加载android os之后。例如 android 5 到 android 6。还将版本从 6.0 更改为 6.1。我们想获得版本更改报告。但是在版本更改后,应用程序无法启动且服务无法运行。为此,我如何启动我的应用程序 android os 加载。我知道这个问题与应用程序端无关。我们公司的供应商android os包应该改变他们的包吗?我可以在加载 android os 后编辑此包以启动我的应用程序吗?
  • 我已经更新了我的答案,可以在启动设备后运行应用程序,但如前所述,我不确定应用程序是否也会在更新后运行。我还添加了一个可能的替代解决方案
  • 我使用你的解决方案。我将在更新我们所有设备的版本后测试服务是否工作。许多设备工作。为此,我正在考虑在 android 包端更新后启动应用程序。 Android 软件包包括更新脚本。我会继续从这方面进行研究。
  • 祝你好运!随时通知我
猜你喜欢
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多