2016-08-15 3 views
0

ステータスバーに通知なしでアラームアイコンを設定する必要があります。アプリケーションが実行されているときに機能しますが、アプリケーションを終了した後、受信者は "ALARM_CHANGED"で応答せず、 "BOOT_COMPLETED"でのみ応答します。 ビルドインアラームでユーザーがアラームをオフにした後、アラームアイコンを設定する必要があります。android.intent.action.ALARM_CHANGED

ありがとうございました。

マニフェスト:

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

AlarmInitReceiver.java:

public class AlarmInitReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction() != null) { 
     if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { 
      Toast.makeText(context, "BOOT-completed", Toast.LENGTH_LONG).show(); 
     } 
     if (intent.getAction().equals("android.intent.action.ALARM_CHANGED")) { 
      Toast.makeText(context, "Alarm on", Toast.LENGTH_SHORT).show(); 
      setStatusBarIcon(true); 
     } 
    } 
} 

}

MainActivity:

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    setStatusBarIcon(true); 
    enableReceiver(true); 

} 

protected void enableReceiver(boolean enable) { 
    ComponentName receiver = new ComponentName(mContext, AlarmInitReceiver.class); 
    PackageManager pm = mContext.getPackageManager(); 

    pm.setComponentEnabledSetting(receiver, 
      (enable) ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
      PackageManager.DONT_KILL_APP); 
} 

public static void setStatusBarIcon(boolean enabled) 
{ 
    Intent alarmChanged = new Intent("android.intent.action.ALARM_CHANGED"); 
    alarmChanged.putExtra("alarmSet", enabled); 
    mContext.sendBroadcast(alarmChanged); 
} 

}

答えて

0

溶液は:

public class AlarmInitReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction() != null) { 
     if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { 
      Toast.makeText(context, "BOOT-completed", Toast.LENGTH_LONG).show(); 
     } 
     if (intent.getAction().equals("android.intent.action.ALARM_CHANGED")) { 
      if (intent.getExtras().getBoolean("alarmSet") == false) { 
       Intent alarmChanged = new Intent("android.intent.action.ALARM_CHANGED"); 
       alarmChanged.putExtra("alarmSet", true); 
       context.sendBroadcast(alarmChanged); 
      } 
     } 
    } 
}