2

我看到很多与自动更新相关的问题和答案,正确答案是“没有用户参与就无法完成”。但是,我的许多应用程序都在 Play 商店中选中了“自动更新”复选框,我看到它们自动更新,然后在通知栏中通知我它们实际上已经更新。

很明显它*可以完成......我想知道我的各种选择是让我的应用程序拥有这个功能。它需要在谷歌Play商店中吗?可以在其他商店代替吗?它是否可用于侧面加载的apk......等等。

TIA。

4

2 回答 2

4

在标准手机上,唯一的方法是通过 google play 商店,并且只有在用户选择自动更新之后。当应用程序的权限发生变化时,它将停止工作。此外,谷歌可以随意从您的设备中删除应用程序。

以上适用于所有安装了 google 服务和 play 商店的 Android 设备。此外,通过适用于 Android 的 Amazon Appstore 购买的应用程序会在 Amazon Kindle Fire 设备上自动更新,一些制造商拥有自己的应用程序商店,其中可能包含该功能;想到三星和联想。

如果您控制硬件或拥有根设备,则可以创建/安装系统应用程序,该应用程序可以安装任何应用程序而无需用户干预。

于 2012-12-05T01:50:29.383 回答
0

这里更多的是关于如何做的机制而不是理论。在实践中,这很容易实现。

在您的清单中:

    <receiver android:name=".BcastReciever">
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_REPLACED" />
            <data android:scheme="package" android:path="com.your.package" />
        </intent-filter>
    </receiver>

然后在您的广播接收器中:

public class BcastReciever extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getDataString().contains("com.your.package")){
            Intent startActivityIntent = new Intent(context, Your.class);
            startActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
            startActivityIntent.setAction("onboot");
            context.startActivity(startActivityIntent);
        }
    }
}

如果这是您想要的,您也可以只重新启动服务而不是触发活动。

于 2012-12-05T02:54:05.847 回答