1

Я хотел был бы отправить уведомление в определенный день недели, мой код работает в этот день, но каждый раз, когда я включаю свой смартфон/эмулятор, я получаю уведомление. Как я могу исправить эту проблему?Андроид запускается при загрузке

Мои Manifest

<receiver android:name=".AutoStart"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED"></action> 
      </intent-filter> 
     </receiver> 
     <receiver android:name=".Alarm"></receiver> 
     <receiver android:name=".NotificationActivity"></receiver> 

AutoStart.java

public class AutoStart extends BroadcastReceiver 
{ 
    Alarm alarm = new Alarm(); 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) 
     { 
      alarm.SetAlarm(context); 
     } 
    } 
} 

И мой Alarm.java

@SuppressLint("Wakelock") 
    public class Alarm extends BroadcastReceiver 
    {  
     static RSSFeed myRssFeed = null; 
     @Override 
     public void onReceive(Context context, Intent intent) 
     { 

      PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
      PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, ""); 
      wl.acquire(); 

      SetAlarm(context); 

      wl.release(); 
     } 

    public void SetAlarm(Context context) 
    { 
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, NotificationActivity.class); 
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
     Calendar calendar = new GregorianCalendar(); 
     calendar.set(Calendar.DAY_OF_WEEK, 2); 
     calendar.set(Calendar.HOUR_OF_DAY, 9); 
     calendar.set(Calendar.MINUTE, 30); 
     calendar.set(Calendar.SECOND, 0); 
     am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi); 
    } 

    public void CancelAlarm(Context context) 
    { 
     Intent intent = new Intent(context, Alarm.class); 
     PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     alarmManager.cancel(sender); 
    } 
} 

Спасибо

ответ

0

Потому что вы объявили android.intent.action .BOOT _COMPLETED в вашем манифесте. Это означает, что всякий раз, когда ваше устройство или телефон перезагрузится, он вызовет BroadcastReceiver.

Попробуйте следующее. Это рабочий код. Он разгоняет процессор каждые 10 минут, пока телефон не выключится.

Добавить в Manifest.xml:

...

<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission> 

...

<receiver android:process=":remote" android:name="Alarm"></receiver> 

... Код:

package YourPackage; 
import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.PowerManager; 
import android.widget.Toast; 

public class Alarm extends BroadcastReceiver 
{  
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
     PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, ""); 
     wl.acquire(); 

     // Put here YOUR code. 
     Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show(); // For example 

     wl.release(); 
    } 

public void SetAlarm(Context context) 
{ 
    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    Intent i = new Intent(context, Alarm.class); 
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 10, pi); // Millisec * Second * Minute 
} 

public void CancelAlarm(Context context) 
{ 
    Intent intent = new Intent(context, Alarm.class); 
    PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0); 
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
    alarmManager.cancel(sender); 
} 
} 

Set Alarm из Услуга:

package YourPackage; 
import android.app.Service; 
import android.content.Context; 
import android.content.Intent; 
import android.os.IBinder; 

public class YourService extends Service 
{ 
Alarm alarm = new Alarm(); 
public void onCreate() 
{ 
    super.onCreate();  
} 

public void onStart(Context context,Intent intent, int startId) 
{ 
    alarm.SetAlarm(context); 
} 

@Override 
public IBinder onBind(Intent intent) 
{ 
    return null; 
} 

}

+0

hiiiii ............... –

+0

hello.Try выше код и дайте мне знать это работает или нет – Priya

+0

Спасибо за ответ, но у меня было и в получателе я не могу изменить

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