java - OnBootReceiver 可以工作,但找不到 AlarmReceiver

标签 java android cordova mobile

我正在尝试在启动后立即设置警报接收器。因此,我有一个应该注册警报的 OnBootReceiver。 onBootReceiver 工作并且被调用,但不知何故它找不到我的 AlarmReceiver 类。

开机后成功启动的OnBootReceiver:

public class OnBootReceiver extends BroadcastReceiver {

    private static final String TAG = "OnBootReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(TAG, "called");

        Intent i = new Intent(context, com.packagenames.AlarmReceiver.class);
        PendingIntent pi = PendingIntent.getService(context, 0, i, 0);
        AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

        Calendar time = Calendar.getInstance();
        time.setTimeInMillis(System.currentTimeMillis());
        time.add(Calendar.SECOND, 30);

        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), time.getTimeInMillis(), pi);

    }

}

如您所见,它配置警报尝试调用 com.packagenames.AlarmReceiver.class。这个类存在并且位于同一个包中:

public class AlarmReceiver extends BroadcastReceiver {

    private static final String TAG = "AlarmReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(TAG, "alarm received");
        Intent i = new Intent(context, com.packagename.DataService.class);
        i.putExtra("action", "process");
        context.startService(i);
    }

}

不幸的是,我收到以下错误:

02-03 09:22:25.344: W/ActivityManager(103): Unable to start service Intent { flg=0x4 cmp=com.phonegap.packagename/.AlarmReceiver (has extras) }: not found

Android list 如下所示

<application>

// activities etc

        <receiver
            android:name="com.phonegap.packagename.OnBootReceiver"
            android:enabled="true"
            android:exported="false"
            android:label="OnBootReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

        <receiver
            android:name="com.phonegap.packagename.AlarmReceiver"
            android:enabled="true"
            android:label="AlarmReceiver">
            <intent-filter>
            </intent-filter>
        </receiver>

    </application>

你发现错误了吗?也许我忘记了什么?

谢谢

编辑:在 list 中,我添加了

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

为了使 OnBootReceiver 工作。我需要类似的闹钟吗?

最佳答案

在创建待处理 Intent 时,您不应该使用 getBroadcast 而不是 getService 吗?

关于java - OnBootReceiver 可以工作,但找不到 AlarmReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9125905/

相关文章:

java - 从 2.6 升级到 3.7 时出现 BIRT JDBCException "Cannot load JDBC Driver class: com.mysql.jdbc.Driver"

java - Hibernate 被弃用了吗?

java - 如何将 JBoss 服务器绑定(bind)到您的 Web 应用程序?

android - 如何从 android 中的 facebook API 获取所有 friend 的姓名、ID、生日、位置等?

javascript - 无法在 pubnub javascript 回调中收到错误

android - 在 phonegap 中使用 allowEdit 时更改文件名

java - 将一维数组转换为二维数组

android - 如何生成免费和付费版本的签名android apk?

java - 通过触摸事件调整图标大小

jquery - 附加 HTML 时增加高度