2012-05-03 12 views
6

He encontrado varios tutoriales sobre la configuración del receptor de alarma para enviar un mensaje de brindis en intervalos establecidos. y he seguido el código y dividido mi propio proyecto en 3 clases.Receptor de alarma y manifiesto de Android

la HelloDroidActivity.java es:

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); 

} 
} 

también la MyAlarmReciever.java (ya estoy al tanto de la falta de ortografía en el nombre):

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(); 
    } 
} 

y el manifiesto de Android que parece esto:

<?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> 

He leído eso para que el proyecto reciba mi alarmR eceiver java class Necesito editar el manifiesto con un nuevo receptor. pero soy bastante nuevo en XML y no sé qué dirección tomar.

+0

Uno de los sitios que estoy usando para un tutorial es [http://justcallmebrian.com/?p=129](http://justcallmebrian.com/? p = 129) – kprasad89

+0

Echa un vistazo a esto, este funcionó para mí. http://www.dotkam.com/2011/01/10/android-prefer-alarms-and-intent-receivers-to-services/ – VendettaDroid

Respuesta

0

En su manifiesto, el receptor está escuchando una acción llamada com.example.helloandroid.alarms. Pero en su HelloDroidActivity.java no hay tal acción se agrega a la intención.

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

Ya existe un receptor que ha definido en su archivo de manifiesto. Pero el nombre no es correcto, vea que el nombre debe ser el nombre completo de la clase, es decir, el paquete. Nombre de la visita. Y en tu caso, el nombre de tu receptor es MyAlarmReciever. Por lo que el receptor se define como sigue

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