-1
  • 我正在开发应用程序,该应用程序需要在应用程序安装时执行 Web 服务,并且只执行一次。
  • 目前我为此使用了共享首选项,但是如果用户清除应用程序数据,那么它会丢失共享首选项值,并且我的代码会破坏该应用程序是新创建的,并且我的代码会进一步执行 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

如果您有服务器,您可以在服务器中保存状态并在执行任务之前获取状态

于 2016-09-18T06:20:06.003 回答
0

您有以下选择:

  1. 您可以在外部存储器的隐藏目录中创建一个包含所需信息的文件。
  2. 您可以针对这些需求创建和使用您的 Web 服务。

您的代码不起作用,因为您的应用程序在创建广播时尚未安装,并且因为在 android 中,您的应用程序只有在用户至少启动一次时才能接收广播。

据我了解,第一个选项也不适合您的需求,因为外部存储器可能会被擦除或替换。Android 设备不提供 100% 及时持久的任何类型的内存,如果您确实需要有关安装应用程序的信息,您应该运行接收 android 设备 ID 并将有关它的信息发送回您的应用程序的服务器是第一次安装还是重新安装。但是我想您应该假设在重新安装应用程序并再次运行您的 Web 服务时清除应用程序数据。最简单的解决方案:只需将其传递给您的服务 android 设备 ID,如果它是新 ID,则执行您的操作(如果它已经完成)。

于 2016-09-18T06:38:03.590 回答