【问题标题】:Alarm Receiver and Android Manifest警报接收器和 Android 清单
【发布时间】:2012-05-03 22:10:27
【问题描述】:

我找到了几个关于设置警报接收器以在设定的时间间隔内发送 toast 消息的教程。我一直在关注代码并将我自己的项目分解为 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();
    }
}

和看起来像这样的 Android 清单:

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

我已经读过,为了让项目接收我的 alarmReceiver java 类,我需要使用新的接收器编辑清单。但我对 XML 还很陌生,不知道该往哪个方向发展。

【问题讨论】:

标签: java android broadcastreceiver


【解决方案1】:

您已经在清单文件中定义了一个接收器。但是名称不正确,请参阅名称需要是完整的类名,即 package.RecieverName。在您的情况下,您的接收器的名称是 MyAlarmReciever。所以receiver会被定义如下

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

【讨论】:

    【解决方案2】:

    在您的清单中,接收方正在侦听一个名为 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");
      //....
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多