2012-05-03 31 views
6

Tôi đã tìm thấy một số hướng dẫn về cách cài đặt bộ thu cảnh báo để gửi tin nhắn bánh mì nướng trong khoảng thời gian định sẵn. và tôi đã theo mã và chia nhỏ dự án của riêng tôi thành 3 lớp.Trình nhận báo thức và Tệp kê khai Android

các HelloDroidActivity.java là:

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

} 
} 

cũng là MyAlarmReciever.java (i am đã nhận thức được sai lầm chính tả trên tên):

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

và Manifest Android trông giống như này:

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

Tôi đã đọc để nhận dự án nhận báo thức của tôiR eceiver java class Tôi cần phải chỉnh sửa manifest với một người nhận mới. nhưng tôi khá mới với XML và không biết phải đi theo hướng nào.

+0

Một trong những trang web tôi đang sử dụng cho hướng dẫn là [http://justcallmebrian.com/?p=129](http://justcallmebrian.com/? p = 129) – kprasad89

+0

Hãy xem cái này, cái này làm việc cho tôi. http://www.dotkam.com/2011/01/10/android-prefer-alarms-and-intent-receivers-to-services/ – VendettaDroid

Trả lời

0

Trong tệp kê khai của bạn, người nhận đang nghe một hành động được gọi là com.example.helloandroid.alarms. Nhưng trong số HelloDroidActivity.java, hành động đó không được thêm vào mục đích.

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ó người nhận mà bạn đã xác định trong tệp kê khai của mình. Nhưng tên không chính xác thấy tên cần phải là tên lớp đầy đủ nghĩa là package.RecieverName. Và trong trường hợp của bạn tên của người nhận của bạn là MyAlarmReciever. Vì vậy, người nhận sẽ được xác định như sau

<receiver android:name=".alarms.MyAlarmReciever"> 
    <intent-filter> 
     <action android:name="com.example.helloandroid.alarms" /> 
    </intent-filter> 
</receiver> 
Các vấn đề liên quan