当android设备onopen时,运行应用程序

时间:2016-12-22 14:17:25

标签: android package version updates ota

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

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

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

更新套餐来自不同公司的公司。一旦包加载,他们应该更改包以启动我的应用程序?

1 个答案:

答案 0 :(得分:0)

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

编辑:

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

<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。下次运行时将当前版本与存储的版本进行比较。如果不相同,请更新您的包裹。这可能是一种替代解决方案。