2012-05-03 3 views
6

Ho trovato diversi tutorial sull'impostazione del ricevitore di allarme per inviare un messaggio di toast in intervalli prestabiliti. e ho seguito il codice e suddiviso il mio progetto in 3 classi.Ricevitore allarme e Android Manifest

la HelloDroidActivity.java è:

package com.example.helloandroid; 

import java.util.Calendar; 

import android.app.Activity; 
import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.example.helloandroid.alarms.MyAlarmReciever; 

public class HelloDroidActivity extends Activity { 
/** Called when the activity is first created. */ 

public static int RTC_WAKEUP; 
public static long INTERVAL_FIFTEEN_MINUTES; 

private AlarmManager alarmMgr; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    TextView tv = new TextView(this); 
    tv.setText("Hello, Krishneel"); 
    setContentView(tv); 
    Toast.makeText(this, "Alarm went off", Toast.LENGTH_SHORT).show(); 

    Log.d("OnCreate", "abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"); 
    alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(this, MyAlarmReciever.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, 
      intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.add(Calendar.SECOND, 5); 
    alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, 
      calendar.getTimeInMillis(), 7000, pendingIntent); 

} 
} 

anche la MyAlarmReciever.java (io sono già a conoscenza del errore di ortografia sul nome):

package com.example.helloandroid.alarms; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
import android.widget.Toast; 

public class MyAlarmReciever extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 

     Log.e("onReceive", "ladskjflsakjdflskjdflskjdfslkjdflasdf"); 
     Toast.makeText(context, "OnReceive alarm test", Toast.LENGTH_SHORT).show(); 
    } 
} 

e il manifesto di Android che sembra this:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.helloandroid" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="7" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name="com.example.helloandroid.HelloDroidActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

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

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

</manifest> 

Ho letto quello per ottenere il progetto per ricevere il mio allarmeR eceiver java class Devo modificare il manifest con un nuovo ricevitore. ma sono abbastanza nuovo per XML e non so quale direzione prendere.

+0

Uno dei siti che sto usando per un tutorial è [http://justcallmebrian.com/?p=129](http://justcallmebrian.com/? p = 129) – kprasad89

+0

Dai un'occhiata a questo, questo ha funzionato per me. http://www.dotkam.com/2011/01/10/android-prefer-alarms-and-intent-receivers-to-services/ – VendettaDroid

risposta

0

Nel manifest, il ricevitore sta ascoltando un'azione chiamata com.example.helloandroid.alarms. Ma nel tuo HelloDroidActivity.java non c'è questa azione aggiunta all'intento.

public class HelloDroidActivity extends Activity { 
//.... 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    //.... 
    Intent intent = new Intent(this, MyAlarmReciever.class); 
    intent.setAction("com.example.helloandroid.alarms"); 
    //.... 
    } 
} 
3

C'è già un ricevitore che è stato definito nel file manifest. Ma il nome non è corretto vedi il nome deve essere il nome completo della classe che è il package.RecieverName. E nel tuo caso il nome del tuo ricevitore è MyAlarmReciever. Così il ricevitore sarà definito come segue

<receiver android:name=".alarms.MyAlarmReciever"> 
    <intent-filter> 
     <action android:name="com.example.helloandroid.alarms" /> 
    </intent-filter> 
</receiver>