2017-11-18 3 views
1

이것은 내 주먹 응용 프로그램이며 Alarm managerBroadcastReceiver과 작동 시키려고합니다.BroadcastReceiver가 설치된 알람 관리자

나는 Alarm manageronReceive()을 유발하기를 원하는 시간에 "SetFutureStartTime()"함수를 호출합니다. 그러나 그 때가되면, 헤플도 없습니다.

이 제 코드입니다 : 나는 무엇을 놓치고

..... 
</activity> 
    <receiver android:name=".MainActivity$AlarmReceiver_SendOn"> 
     <intent-filter> 
      <action android:name="Broadcast"> 
      </action> 
     </intent-filter> 
    </receiver> 
</application> 

:

public void SetFutureStartTime(int startHour, int startMin) 
{ 
    Context context = this; 

    m_alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(context, AlarmReceiver_SendOn.class); 
    intent.setAction("Broadcast"); 
    m_alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0); 

    // Set the alarm to start at 21:32 PM 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(Calendar.HOUR_OF_DAY, startHour); 
    calendar.set(Calendar.MINUTE, startMin); 

    m_alarmMgr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), m_alarmIntent); 
} 

public class AlarmReceiver_SendOn extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     SendTcpMessage(TURN_ON_COMMAND); //I put here break point but nothing happens 
    } 
} 

manifast의 끝은?

+0

은'당신'MainActivity'의 내부 클래스를 AlarmReceiver_SendOn'되어

public class AlarmReceiver_SendOn extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("TAG", "Started >>>>>>>"); //and doing something } } 

AlarmReceiver_SendOn

입니다 , 매니 페스트에 표시된 것과 같은가? –

+0

안녕하세요, 그렇습니다.'MainActivity' 내부 – user1673206

+0

Receiver 클래스를 중첩 클래스로 만들려면 'public static'이어야합니다. –

답변

1

이 코드는 나를 위해 작동 : 이 MainActivity

public class MainActivity extends AppCompatActivity { 

    private AlarmManager m_alarmMgr; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
      SetFutureStartTime(19, 25); 
    } 

    public void SetFutureStartTime(int startHour, int startMin) 
    { 
     Context context = this; 

     m_alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
     Intent intent = new Intent(context, com.asb.test.testapplication.AlarmReceiver_SendOn.class); 
     PendingIntent m_alarmIntent = PendingIntent.getBroadcast(context, (int) System.currentTimeMillis(), intent, 0); 

     // Set the alarm to start at 21:32 PM 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     calendar.set(Calendar.HOUR_OF_DAY, startHour); 
     calendar.set(Calendar.MINUTE, startMin); 

     m_alarmMgr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), m_alarmIntent); 
    } 

} 

는이 AndroidManifest를

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.asb.test.testapplication"> 
    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 
    <uses-permission android:name="android.permission.WAKE_LOCK"/> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

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

    </application> 
</manifest> 
관련 문제