2014-02-21 24 views
0

工作,我必須失去了一些東西,我做了一個試驗項目申請爲自己和這個完美的作品存在,但,當我試圖實現我AlarmManager到我的主要項目的片段,它只是贏得了」工作。這裏是我的代碼:AlarmManager不片段也不Main.java

的方法就是在我的片段:

public void schedule() 
{ 
    Long time = new GregorianCalendar().getTimeInMillis()+10*1000; 
    Intent intent = new Intent(getActivity(), AlarmReceiver.class); 

    AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); 

    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, time, 10*1000, PendingIntent.getBroadcast(getActivity(), 1, intent, PendingIntent.FLAG_UPDATE_CURRENT)); 


} 

,這裏是我的AlarmReceiver.class

public class AlarmReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) 
{ 

    Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show(); 

} 
} 

和這裏是我的清單文件的準備工作:

<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 

    <application 
    ... > 
<receiver android:name=".AlarmReceiver"/> 

我在做什麼錯?

注:看來,它甚至沒有達到AlarmReceiver

回答

2

您的代碼似乎工作。 但問題在於清單。在

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

應該是具有完整的包名,例如

<receiver android:name="com.example.AlarmReceiver"/> 

我有雙與我的應用程序進行檢查。所以你很好走。

+0

謝謝!它已經解決了,但我會upvote –

+0

感謝您的upvote。你是如何解決它的?我的建議是一樣的嗎? 我與我的好友有分歧...... – alexk

+0

是的!我不得不加上「com。示例......」因爲我試圖使用片段和AlarmReceiver在同一個包沒有 –

2

您錯誤地使用接收機。你需要做的第一件事就是到一個動作與動作添加到您的接收器的清單

<receiver android:name=".AlarmReceiver"> 
<intent-filter> 
      <action android:name="com.example.action.ALARM" /> 
</intent-filter> 

然後,構建意圖:

public void schedule() { 
Long time = new GregorianCalendar().getTimeInMillis()+10*1000; 
Intent intent = new Intent("com.example.action.ALARM"); 

... 

} 

,並在您的接收器:

public void onReceive(Context context, Intent intent) { 
if (intent.getAction().equals("com.example.action.ALARM") 
    Toast.makeText(context, "Alarm Triggered", Toast.LENGTH_LONG).show(); 
} 

這應該做的伎倆。

+0

感謝,它雖然解決了,會給予好評 –