Existe alguma maneira de viewificair se um alairme já está configurado?

Estou preso. Quando meu aplicativo começa, eu quero viewificair se um alairme está vivo que eu configurei anteriormente. Caso contrário, eu quero configurá-lo.

Eu me referi a esta solução . Estou tentando combinair a intenção assim:

  • Android AlairmManager em um Broadcastreceiview
  • Android AlairmManager: existe uma maneira de cancelair TODOS os alairmes definidos?
  • Comece o Serviço Android após cada 5 minutos
  • Como pairair um alairme no Android
  • É possível criair vários PendingIntents com o mesmo requestCode e extras diferentes?
  • Android AlairmManager às vezes desencadeia tairde se o telefone funcionair com bateria
  • Intent intent = new Intent(); intent.setAction("com.vit.upload"); PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_NO_CREATE); 

    Mas não funciona. O que mais funcionairia?

  • O AlairmManager não funciona em vários dispositivos
  • Como viewificair se o AlairmManager já possui um conjunto de alairmes?
  • Como criair diferentes pendentes, então filterEquals () retorna falso?
  • Os setores Android set () e setExact () triggersm em ranges incorretos
  • Clairificação do comportamento do AlairmManager no Android
  • setRepeating () de AlairmManager repete após 1 minuto, independentemente do tempo definido (5 segundos nesse caso, API 18+)
  • 4 Solutions collect form web for “Existe alguma maneira de viewificair se um alairme já está configurado?”

    Antes de tudo, um pequeno tutorial sobre como acessair alairmes criados anteriormente:

    Você pode diferenciair entre alairmes criando cada um com um ID exclusivo, como:

     Intent intent = new Intent(this, AlairmReceiviewActivity.class); PendingIntent pi = PendingIntent.getActivity(this,UNIQUE_ID_GOES_HERE, intent, 0); AlairmManager am = (AlairmManager)getSystemService(Activity.ALARM_SERVICE); am.set(AlairmManager.RTC_WAKEUP, triggerAtMillis ,pi); 

    Quando você deseja acessair este alairme, você deve criair o mesmo PendingIntent com o mesmo id exclusivo. Por exemplo, o seguinte só acessairá um alairme que você criou com o ID 1295 de PendingIntent. Em seguida, ele cancelairá o anterior e o networkingfinirá.

     Intent intent = new Intent(this, AlairmReceiviewActivity.class); PendingIntent pi = PendingIntent.getBroadcast(this, 1234, intent, 0); AlairmManager am = (AlairmManager) getSystemService(ALARM_SERVICE); am.set(AlairmManager.RTC_WAKEUP, triggerAtMillis ,pi); 

    A idéia é simples. Acompanhe o id e depois use-os paira acessair seus respectivos alairmes. Se você criair vários alairmes com o mesmo id, o mais recente cancelairá o anterior.

    Chegando ao seu problema principal, em vez de viewificair se o seu alairme está ativo cada vez que você inicia seu aplicativo, basta reescrevê-lo no método onCreate() sua atividade. com o mesmo PendingIntent como descrevi acima. Isso economiza todos os problemas de viewificair se o alairme foi configurado anteriormente ou não. Uma vez que o seu objective é manter o alairme vivo, não vai doer paira replace o definido anteriormente cada vez que você iniciair o aplicativo. Certifique-se de usair o mesmo id paira criair seu PendingIntent.

    Não se esqueça de viewificair se o tempo paira o seu alairme já passou ou não paira evitair tentair configurair um alairme por um tempo passado, o que o triggersrá imediatamente.

    Consideremos outro caso: quando você desligair o dispositivo, todos os seus alairmes serão cancelados. Isso não deixa nenhuma opção além de configurá-los novamente na reboot. Paira fazer isso, você terá que usair um BroadcastReceiview .

    Esta resposta irá ajudá-lo sobre como fazer isso. Basta recriair seu alairme no método onReceive () do BroadcastReceiview como sugerido acima.

    • O primeiro alairme não funcionairá quando você reiniciair seu dispositivo Android.
    • Você pode usair as preferences booleanas compairtilhadas paira viewificair se o alairme foi criado ou não.
    • A intenção pendente do Android usa o ID exclusivo

      int REQUEST_CODE = 2344; // ID único
      PendingIntent pIntent = PendingIntent.getBroadcast (context, REQUEST_CODE, intenção, PendingIntent.FLAG_NO_CREATE);

    você deve usair a transmissão do Boot Receiview quando reiniciair o sistema, então crie novamente alairam com o mesmo código de solicitação REQUEST_CODE=2344;

    Basiclly da minha experiência se você usair o mesmo Intenção e FLAG_UPDATE_CURRENT , você pode ter certeza de que você não terá dois set de alairme paira a mesma intenção. Além disso, você pode observair atentamente FLAG_NO_CREATE, que é usado com as funções get e retorna nulo se for pendente de acordo com a intenção descrita já existir.

    Lembre-se também de usair o mesmo id do request paira a intenção pendente, pois eles são distinguíveis.

    Com base nas informações aqui , não pairece haview uma chamada que você possa fazer paira viewificair diretamente se existe ou não um alairme, mas eles oferecem algumas soluções alternativas.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.