2

自動更新に関するSOの質問と回答がたくさんありますが、これは「ユーザーの参加なしには実行できない」という正解に相当します。ただし、私のアプリの多くでは、Playストアで[自動的に更新する]チェックボックスがオンになっており、自動更新されてから、実際に更新されたことを通知バーで通知します。

明らかにそれは*実行可能です...私のアプリにこの機能を持たせるためのさまざまなオプションが何であるかを知りたいです。それはグーグルプレイストアにある必要がありますか?代わりに別の店に置くことはできますか?サイドロードされたapkに利用できますか...など。

TIA。

4

2 に答える 2

4

標準の電話では、それを行うことができる唯一の方法は、グーグルプレイストアを介して、そしてユーザーが自動更新をオプトインした後にのみです。アプリケーションの権限が変更されると、動作を停止します。さらに、グーグルはあなたのデバイスから自由にアプリを削除することができます。

上記は、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 に答える