2012-05-03 22 views
6

मुझे सेट अंतराल में टोस्ट संदेश भेजने के लिए अलार्म रिसीवर सेट करने के बारे में कई ट्यूटोरियल मिले हैं। और मैं कोड का पालन कर रहा हूं और अपनी परियोजना को 3 कक्षाओं में तोड़ दिया है।अलार्म रिसीवर और एंड्रॉइड मैनिफेस्ट

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

} 
} 
भी

MyAlarmReciever.java (मैं पहले से ही नाम पर वर्तनी की गलती के बारे में पता कर रहा हूँ):

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

और एंड्रॉयड प्रकट जो की तरह दिखता है यह:

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

मैंने पढ़ा है कि परियोजना को मेरा अलार्म प्राप्त करने के लिए ईसीवर जावा क्लास मुझे एक नए रिसीवर के साथ मेनिफेस्ट को संपादित करने की जरूरत है। लेकिन मैं एक्सएमएल के लिए बिल्कुल नया हूं और यह नहीं जानता कि कौन सी दिशा लेनी है।

+0

साइटों में से एक इस प्रकार परिभाषित किया जाएगा? पी = 12 9) – kprasad89

+0

इस पर एक नज़र डालें, यह मेरे लिए काम करता है। http://www.dotkam.com/2011/01/10/android-prefer-alarms-and-intent-receivers-to-services/ – VendettaDroid

उत्तर

0

आपके मैनिफेस्ट में, रिसीवर com.example.helloandroid.alarms नामक एक क्रिया को सुन रहा है। लेकिन आपके HelloDroidActivity.java में इस तरह की कार्रवाई इरादे में नहीं जोड़ा गया है।

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

पहले से ही एक रिसीवर है जिसे आपने अपनी मेनिफेस्ट फ़ाइल में परिभाषित किया है। लेकिन नाम सही नहीं है, इस नाम को पूरा वर्ग नाम होना चाहिए यानी पैकेज। रिसीवरनाम। और आपके मामले में आपके रिसीवर का नाम MyAlarmReciever है। तो रिसीवर के रूप में मैं कर रहा है [http://justcallmebrian.com/?p=129](http://justcallmebrian.com/ एक ट्यूटोरियल के लिए उपयोग कर रहा हूँ

<receiver android:name=".alarms.MyAlarmReciever"> 
    <intent-filter> 
     <action android:name="com.example.helloandroid.alarms" /> 
    </intent-filter> 
</receiver> 
संबंधित मुद्दे