how to use ACTION_PACKAGE_FIRST_LAUNCH intent-filt

2019-02-22 12:16发布

问题:

I am trying to use the intent-filter ACTION_PACKAGE_FIRST_LAUNCH to make the application do some tasks when it first launched, however it not being captured by the broadcast receiver my Manifest

  <receiver android:name=".reminder.ReminderActionReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_FIRST_LAUNCH" />
            <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" />
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>

this my broadcast receiver implementation

  this.context = context;
    String mAction = intent.getAction();
    Log.i("r", mAction);
    if (mAction == Intent.ACTION_PACKAGE_DATA_CLEARED) {

    } else if (mAction == Intent.ACTION_PACKAGE_FIRST_LAUNCH) {


    }

How can i make it start when the app first launched?

回答1:

Sorry those intents except for boot_completed are only sent to the play store. But it is relatively simple to do what you need otherwise. Instead use SharedPreferences, like example:

public static final String KEY_PREFS_FIRST_LAUNCH = "first_launch";
// ...
SharedPreferences prefs = SharedPreferences.getDefaultSharedPreferences(this);
if(prefs.getBoolean(KEY_PREFS_FIRST_LAUNCH, true))
{
    //first launch
    prefs.edit().putBoolean(KEY_PREFS_FIRST_LAUNCH,false).commit();
}