2014-02-06 1 views
2

Я хочу пробудить все свое приложение для Android ежедневно в 9 утра. Я попытался использовать диспетчер аварийных сигналов для Android. Но это вызывает ожидающие намерения. Но в моем случае не ожидая намерения, я хочу разбудить полное приложение. Ниже приведен мой код. Поскольку я новичок в развитии Android, всякая помощь очень ценится.Как просыпаться приложение для Android в определенное время?

public void SetAlarm() { 
    Calendar cal = Calendar.getInstance(); 
    cal.set(Calendar.HOUR_OF_DAY, 09); 
    cal.set(Calendar.MINUTE, 00); 
    cal.set(Calendar.SECOND, 0); 
    cal.set(Calendar.MILLISECOND, 0); 
    AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(this, MainActivity.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 
    alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 
    } 

А в классе MainActivity:

public class MainActivity extends Activity { 

    String ua = "Mozilla/5.0 (Android; Tablet; rv:20.0) Gecko/20.0 Firefox/20.0"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    WebView myWebView = (WebView) findViewById(R.id.webview); 
    myWebView.setBackgroundColor(0); 
    WebSettings webSettings = myWebView.getSettings(); 
    myWebView.getSettings().setUserAgentString(ua); 
    webSettings.setJavaScriptEnabled(true); 
    myWebView.setWebChromeClient(new WebChromeClient()); 
    webSettings.setDomStorageEnabled(true); 
    myWebView.setWebViewClient(new MyAppWebViewClient()); 
    myWebView.loadUrl("file:///android_asset/www/index.html"); 
    SetAlarm(); 
    } 
} 

Но в 9 часов утра он не просыпается мое приложение вверх. Любые ошибки?

+0

Удостоверьтесь, что у вас есть разрешение на пробуждение в вашем манифесте, '' – FabianCook

+1

Я добавил это разрешение – SSS

+0

@SSS, пожалуйста, см. Мой ответ, и он будет работа 100% – Harshid

ответ

1

Представьте (BroadcastReceiver) еще один шаг, чтобы открыть полное приложение.

AlarmManager ->broadcastReceiver -> Ваш Всплеск Apps/пусковая страница

Вот он.

1

Если вы открываете деятельности вы должны использовать PendingIntent.getActivity вместо PendingIntent.getBroadcast

+0

ok .. Я попробую getActivity вместо getBroadcast – SSS

1

Как вы хотите установить ежедневно вместо alarmMgr.set использования alarmMgr.setReapting сигнализации.

1
Intent intent = new Intent(con, YourAppReciever.class); 
PendingIntent sender = PendingIntent.getBroadcast(con, 0, intent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 

Создайте приемник и слушайте эту трансляцию.

public class YourAppReciever extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     context.startActivity(new Intent(context, MainActivity.class)); 
    } 

} 
+0

Метод startActivity (Intent) не определен для типа yourAppReciever. Я получаю эту ошибку. – SSS

+0

См. Отредактированный ответ – Triode

0

Следуйте инструкциям ниже.

1. MainActivity.java

Intent myIntent = new Intent(getBaseContext(), MyReceiver.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, myIntent, 0); 
      AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      Calendar calendar = Calendar.getInstance(); 
      calendar.setTimeInMillis(System.currentTimeMillis()); 
      calendar.add(Calendar.SECOND, 10); 
      long interval = 60 * 1000; // 
      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), interval, pendingIntent); 

Шаг 2: Boradcast приемник для запуска вашей деятельности.

MyReceiver.java

public class MyReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent myIntent =new Intent(context, MainActivity.class); 
     myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(myIntent); 
     System.out.println("Receiver Call"); 
    } 


} 

Шаг 3: Положите в свой manifest.xml

<receiver android:name=".MyReceiver"/> 

Изменение интервала valuse согласно вашему требованию если потребуется 24 часов, то интервал = 24 * 60 * 60 * 1000.

Это общее решение для пользовательских просьб пользователя stackoverflow, согласно вашему требованию.

Будет работать идеально. Превосходное кодирование.

+0

Я пробовал ваш код. Как только я установлю его, он должен начать автоматически? Но он не просыпается. – SSS

+0

Может ли у меня настроить время после (через 5 минут) 5 минут ?? Так что я могу проверить, проснулся он или нет? – SSS

+0

Согласно вашему коду, он начнется сейчас и повторится на каждую секунду правильно? – SSS

Смежные вопросы