2016-11-07 15 views
0

ので、これは、このボタンは私のMainActivityにあり、毎回私がそこにいるかどうかを確認したい押すの最も一般的なものAlarmManagerがすでに動作しているかどうかを確認する方法は?

public void onClick(View v) { 
      boolean alarmUp = (PendingIntent.getBroadcast(MainActivity.this ,0, 
        new Intent(MainActivity.this,Notifications.class), 
        PendingIntent.FLAG_NO_CREATE) != null); 

      if (alarmUp) 
      { 
       am.cancel(pend); 
       Intent alarmIntent = new Intent(MainActivity.this,Notifications.class); 
       final PendingIntent pendingIntent = 
         PendingIntent.getBroadcast(MainActivity.this, 0, alarmIntent, 
           PendingIntent.FLAG_NO_CREATE); 
       if (pendingIntent != null) { 
        pendingIntent.cancel(); 
       } 
       Toast.makeText(MainActivity.this,"Tweak cleared", Toast.LENGTH_LONG).show(); 
      } 
      else { 
       Toast.makeText(MainActivity.this,"There is no Tweak!", Toast.LENGTH_LONG).show(); 
      } 

あるこのqustionがたくさん尋ねてきたと私は答えの多くを試してみましたが、うまくいきませんでしたアラーム "AM"とトーストマッサージをキャンセルしている場合はアラームまたはノーです。アプリはいつも、 "トゥイークはありません"というelseステートメントのマッサージをトーストします。たとえアラームがあっても...私はアンドロイドの初心者なので、どんな助けもありがとうと思います。

編集

これは私がそれをキャンセルし、他の1を押す前に、私は、このボタンを押してアラームを

start.setOnClickListener(new View.OnClickListener() { 
     @Override 

public void onClick(View v) { 
      intent = new Intent(getApplicationContext(), Notifications.class); 
      pend = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
      am = (AlarmManager) getSystemService(ALARM_SERVICE); 
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60, pend); 

を開始し、私のMainActivityで別のボタンです。

編集

これは、アラームをチェックしit..itは動作しますが、私はアプリを閉じて、再度開いたとき、それは、アラームがないことを伝えますキャンセルする私の他の試みである「何の微調整はありませんが!」 1

cancel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (am != null && pend != null) { 
       am.cancel(pend); 
       pend = null; 
       Toast.makeText(MainActivity.this,"Tweak cleared", Toast.LENGTH_LONG).show(); 
      } 

      else { 
       Toast.makeText(MainActivity.this,"There is no Tweak!", Toast.LENGTH_LONG).show(); 
      } 

     } 

    }); 

保留と思いますがあっても、あなたが「PendingIntent.FLAG_NO_CREATE」フラグを使用しているため、ボタンを「スタート」

おかげ

答えて

0

に初期化されprviate変数であり、記述されているPendingIntentがまだ存在しない場合は、作成する代わりにnullを返します。

あなたのコードから、それは常にnullを返しますので、あなたは、前にPendingIntentを作成したことはありません。

+0

保留中のインテントを作成するコードを追加しました –

+0

私は同じインパクトインテントを使用していません.thanks :) –

+0

はい、保留中の同じインテントを使用していません。 –

0
private AlarmManager mAlarmMgr; 
private PendingIntent mPendingIntent; 

if (mAlarmMgr != null && mPendingIntent != null) { 
    mAlarmMgr.cancel(mPendingIntent); 
    mPendingIntent = null; 
    Log.v("alarm", "done"); 
} else { 
    Log.v("alarm", "no PendingIntent instance to cancel"); 
} 

これは、アラームをキャンセルする方法です。

+0

は、私はちょうど何の問題は、喜んであなたがそれを解決していない@AhmedFahmy it..itは愚かな間違い –

+0

た答え、あなたの時間のためにあなたをとても感謝;) – GuilhE

+0

ちょっと私はあなたを試してみてくださいと思った私は使用していた他の方法に問題がありました私はそれがよりeasy..it限り、私はアプリでだが、私はそれを閉じたときに、それはので、私は仮定何alarm..whichはならないかもしれないがあることを私に告げる警報を解除するために再び戻って行くように良い作品を見つける原因PendingdIntent "pend"は、アプリケーションを閉じるとnullになります。新しいコードで質問を編集しました。もう一度! –