Создайте функцию, которая срабатывает только один раз после установки приложения на телефон.

Я разрабатываю мобильное приложение, используя ApacheCordova/Phonegap. Мне нужна функция, которая отправляет мне SMS один раз за установку. Если я поставлю свою функцию на «DeviceReady», она будет запускаться каждый раз при открытии приложения. Есть ли решение для запуска функции при установке приложения ИЛИ при первом запуске?

Любое предложение будет оценено.


person Salman    schedule 13.09.2014    source источник


Ответы (4)


Я добавил поле в локальное хранилище и при запуске просто проверяю, существует ли это поле. Что-то вроде этого:

if (window.localStorage.getItem("installed") == undefined) {
   /* run function */
   window.localStorage.setItem("installed", true);
}

Редактировать: Причина, по которой я предпочитаю этот метод другим методам, заключается в том, что он работает и на iOS, WP и т. д., а не только на Android.

person muuk    schedule 13.09.2014
comment
Я также использую этот метод в своих приложениях Cordova. - person Dawson Loudon; 13.09.2014
comment
Спасибо, просто для новичка. - person Salman; 14.09.2014
comment
боже, кордова... неужели так сложно было просто создать крючок для этого? - person Juan; 22.03.2017

Проверьте, если это первый раз с помощью метода, а затем выполните действие, если этот метод определяет, что это первый раз.

Ex:

Метод isFirstTime()

private boolean isFirstTime()
    {
    SharedPreferences preferences = getPreferences(MODE_PRIVATE);
    boolean ranBefore = preferences.getBoolean("RanBefore", false);
    if (!ranBefore) {

        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean("RanBefore", true);
        editor.commit();
        // Send the SMS

        }
    return ranBefore;

    }

Вы можете добавить его в свой onCreate()

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    topLevelLayout = findViewById(R.id.top_layout);



   if (isFirstTime()) {
        topLevelLayout.setVisibility(View.INVISIBLE);
    }
person erad    schedule 13.09.2014
comment
Я разрабатываю свое приложение, используя ApacheCordova, с JavaScript. похоже ваш код написан на JAVA или на чем-то другом - person Salman; 13.09.2014

Это должно быть то, что вы ищете:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if(!prefs.getBoolean("firstTime", false)) 
{
// run your one time code
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", true);
editor.commit();
}
person Mayrhofer    schedule 13.09.2014
comment
Вы также можете просто поискать в Google SharedPreferences, это даст вам то, что вы хотите - person Mayrhofer; 13.09.2014
comment
Я не очень хорошо знаком с ApacheCordova/Phonegap, но на самом деле вы можете просто сделать это в ApacheCordova. - person Mayrhofer; 13.09.2014

Используйте некоторое логическое значение, если оно истинно, не вызывайте эту функцию, другой мудрый вызов этой функции пример здесь

if(smssent!=true)
{

//call sms sending method

}


else

{

//just leave blank or else notify user using some toast message

}

Примечание. Хранение логических значений в некоторой базе данных, например, в файлах sharedprefernce или sqllite....

person Dondaldo    schedule 13.09.2014