-1
  • アプリのインストール時に Web サービスを 1 回だけ実行する必要があるアプリに取り組んでいます。
  • 現在、これには共有設定を使用していますが、ユーザーがアプリのデータをクリアすると、共有設定の値が失われ、コードがアプリが新しく作成されたことを損ない、コードが Web サービスをさらに実行します。
  • したがって、自分のアプリ インストールのイベントをブロードキャストするソリューションが必要です。
  • そのためのブロードキャストも作成しますが、他のアプリのインストール時にのみブロードキャストします。

私が使用したこのコード...

ステータス確認用

private void checkAppStatus() {
    boolean isOpen = AppMethod.getBooleanPreference(MainActivity.this, AppConstant.PREF_IS_OPEN);
    if (!isOpen) {
        executeWS();
    }
}

ブロードキャスト

public class AppInfoReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Log.e("My App", "Install");
  }
}

マニフェスト

<receiver android:name=".receiver.AppInfoReceiver">
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_INSTALL" />
            <action android:name="android.intent.action.PACKAGE_ADDED" />
            <action android:name="android.intent.action.PACKAGE_REMOVED" />

            <data android:scheme="package" />
        </intent-filter>
</receiver>
4

2 に答える 2

0

次のオプションがあります。

  1. 必要な情報を含む外部メモリの隠しディレクトリにファイルを作成できます。
  2. これらのニーズに合わせて Web サービスを作成して使用できます。

ブロードキャストが作成された時点でアプリケーションがインストールされておらず、Android ではアプリケーションがユーザーによって少なくとも 1 回起動された場合にのみブロードキャストを受信できるため、コードは機能しません。

私が理解しているように、最初のオプションもニーズに合わないため、外部メモリが消去または交換される可能性があるためです。Android デバイスは、100% 永続的なメモリを提供しません。アプリケーションのインストールに関する情報が本当に必要な場合は、Android デバイス ID を受け取り、それに関する情報をアプリケーションに送り返すサーバーを実行する必要があります。最初のインストールまたは再インストールです。ただし、アプリケーションを再インストールして Web サービスをもう一度実行するときに、アプリのデータを消去することを想定する必要があると思います。最も簡単な解決策:サービスのAndroidデバイスIDに渡し、それが新しいIDであるか、すでに行われている場合はそうでない場合は、あなたのことをしてください。

于 2016-09-18T06:38:03.590 に答える