Java android接收器未被调用

Java android接收器未被调用,java,android,broadcastreceiver,Java,Android,Broadcastreceiver,我有一个android应用程序,我有一个来自WakefulBroadcastReceiver的接收器,它从未被调用过 我在AlaramReceiver.java上设置了一个断点,但从未进入。 我检查了这个案例以及它如何拼写接收方类名 我将添加清单和链接的java类 谢谢你的帮助 舱单: <receiver android:name="fr.cls.mobility.myclsdroiddata.service.android.OnAlarmReceiver_"> AlamarRe

我有一个android应用程序,我有一个来自
WakefulBroadcastReceiver
的接收器,它从未被调用过

我在
AlaramReceiver.java
上设置了一个断点,但从未进入。 我检查了这个案例以及它如何拼写接收方类名

我将添加清单和链接的java类

谢谢你的帮助

舱单:

 <receiver android:name="fr.cls.mobility.myclsdroiddata.service.android.OnAlarmReceiver_">
AlamarReceiver.java:

@EReceiver
public class OnAlarmReceiver extends WakefulBroadcastReceiver {

    private static final String LOG_MESSAGE_ON_RECEIVE = "startWakefulService with context and DataDownloadIntentServiceFactory.getIntentAlarmReceived";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(OnAlarmReceiver.class.getSimpleName(), LOG_MESSAGE_ON_RECEIVE);
        startWakefulService(context, DataDownloadIntentServiceFactory.getIntentAlarmReceived(context, null));
    }

}
DataDownloadIntentServiceFactory.java:

package fr.cls.mobility.myclsdroiddata.service.android;

import com.effitic.delegates.Action;

import android.content.Context;
import android.content.Intent;
import android.os.Parcelable;
import android.os.ResultReceiver;

/**
 * Cette classe crée les différents services Android de mise à jour des positions. <br>
 * <br>
 * Copyright : Copyright (c) 2013 <br>
 * <br>
 * Société : CLS (Collecte Localisation Satellites)
 * 
 * @author Effitic
 * @version Revision: 1.1.0.02 - Date: 2014-01-15
 */
public final class DataDownloadIntentServiceFactory {

    /**
     * Constructeur.
     */
    private DataDownloadIntentServiceFactory() {
        super();
    }

    public static Intent getIntentNetworkStateChanged(Context context, boolean networkAvailable) {
        Intent dataDownloadIntentService = createIntent(context, null, DataDownloadIntentService.NETWORK_STATE_CHANGED);
        dataDownloadIntentService.putExtra(DataDownloadIntentService.NETWORK_STATE_CHANGED, networkAvailable);
        return dataDownloadIntentService;
    }

    private static Intent createIntent(Context context, ResultReceiver resultReceiver, String type) {
        Intent dataDownloadIntentService = DataDownloadIntentService_.intent(context).get();
        dataDownloadIntentService.putExtra(DataDownloadIntentService.TYPE, type);
        dataDownloadIntentService.putExtra(DataDownloadIntentService.RESULT_RECEIVER, resultReceiver);
        return dataDownloadIntentService;
    }

    public static Intent getIntentAlarmReceived(Context context, final Action<Object> refreshFinishedHandler) {
        ResultReceiver resultReceiver = new ResultReceiver(null) {
            @Override
            protected void onReceiveResult(int resultCode, android.os.Bundle resultData) {
                if (refreshFinishedHandler != null) {
                    refreshFinishedHandler.execute(null);
                }
            };
        };

        Intent dataDownloadIntentService = createIntent(context, resultReceiver, DataDownloadIntentService.ALARM_RECEIVED);
        return dataDownloadIntentService;
    }

    public static Intent getIntentRefresh(Context context, final Action<Object> refreshFinishedHandler) {
        ResultReceiver resultReceiver = new ResultReceiver(null) {
            @Override
            protected void onReceiveResult(int resultCode, android.os.Bundle resultData) {
                if (refreshFinishedHandler != null) {
                    refreshFinishedHandler.execute(null);
                }
            };
        };
        Intent dataDownloadIntentService = createIntent(context, resultReceiver, DataDownloadIntentService.REFRESH);
        return dataDownloadIntentService;
    }

    public static Intent getIntentBootCompleteReceived(Context context) {
        Intent dataDownloadIntentService = createIntent(context, null, DataDownloadIntentService.BOOT_COMPLETE_RECEIVED);
        return dataDownloadIntentService;
    }

    public static <T extends ResultReceiver> T getResultReceiverFromIntent(Intent intent, Class<T> clazz) {
        Parcelable o = intent.getParcelableExtra(DataDownloadIntentService.RESULT_RECEIVER);
        if (clazz.isInstance(o)) {
            return clazz.cast(o);
        }
        return null;
    }
}
包fr.cls.mobility.myclsdroiddata.service.android;
导入com.effitic.delegates.Action;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Parcelable;
导入android.os.ResultReceiver;
/**
*Cette classe crée les différents服务公司的职位信息
*
*版权所有:版权所有(c)2013
*
*法国兴业银行:CLS(收集定位卫星) * *@author Effitic *@版本修订:1.1.0.02-日期:2014-01-15 */ 公共最终类DataDownloadIntentServiceFactory{ /** *建筑工人。 */ 私有数据下载IntentServiceFactory(){ 超级(); } 公共静态意图getIntentNetworkStateChanged(上下文上下文,布尔网络可用){ Intent dataDownloadIntentService=createIntent(上下文,null,dataDownloadIntentService.NETWORK\u STATE\u已更改); dataDownloadIntentService.putExtra(dataDownloadIntentService.NETWORK\u状态已更改,网络可用); 返回dataDownloadIntentService; } 私有静态意图createIntent(上下文上下文、ResultReceiver ResultReceiver、字符串类型){ Intent dataDownloadIntentService=dataDownloadIntentService_389;.Intent(context.get(); dataDownloadIntentService.putExtra(dataDownloadIntentService.TYPE,TYPE); dataDownloadIntentService.putExtra(dataDownloadIntentService.RESULT_接收方,resultReceiver); 返回dataDownloadIntentService; } 公共静态意图getIntentAlarmReceived(上下文上下文、最终操作refreshFinishedHandler){ ResultReceiver ResultReceiver=新ResultReceiver(null){ @凌驾 ReceiveResult受保护无效(int-resultCode,android.os.Bundle-resultData){ 如果(refreshFinishedHandler!=null){ refreshFinishedHandler.execute(null); } }; }; Intent dataDownloadIntentService=createIntent(上下文、resultReceiver、dataDownloadIntentService.ALARM_已接收); 返回dataDownloadIntentService; } 公共静态意图getIntentRefresh(上下文上下文、最终操作refreshFinishedHandler){ ResultReceiver ResultReceiver=新ResultReceiver(null){ @凌驾 ReceiveResult受保护无效(int-resultCode,android.os.Bundle-resultData){ 如果(refreshFinishedHandler!=null){ refreshFinishedHandler.execute(null); } }; }; Intent dataDownloadIntentService=createIntent(上下文、resultReceiver、dataDownloadIntentService.REFRESH); 返回dataDownloadIntentService; } 公共静态意图getIntentBootCompleteReceived(上下文){ Intent dataDownloadIntentService=createIntent(上下文,null,dataDownloadIntentService.BOOT_COMPLETE_已接收); 返回dataDownloadIntentService; } 公共静态T GetResultTreceiverFromIntent(Intent-Intent,类clazz){ Parcelable o=intent.getParcelableExtra(DataDownloadIntentService.RESULT\u接收器); if(类实例(o)){ 回炉炉型(o); } 返回null; } }
我的舱单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto" android:versionCode="51" android:versionName="1.3.01-SNAPSHOT" package="fr.cls.mobility.myclsdroiddata">

    <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="14"/>
    <!-- permissions -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <!-- pour le stockages des tuiles de carto -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <application android:allowBackup="false" android:debuggable="true" android:icon="@drawable/notif" android:label="@string/app_name" android:name="fr.cls.mobility.myclsdroiddata.view.application.CLSApplication_" android:theme="@style/AppTheme2">
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:hardwareAccelerated="false" android:label="@string/app_name" android:launchMode="singleTop" android:name="fr.cls.mobility.myclsdroiddata.view.activity.MapViewActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="fr.cls.mobility.myclsdroiddata.view.activity.PanelFragmentActivity" android:windowSoftInputMode="stateHidden"/>
        <service android:name="fr.cls.mobility.myclsdroiddata.service.android.DataDownloadIntentService_"/>
        <receiver android:name="fr.cls.mobility.myclsdroiddata.service.android.OnBootReceiver_">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
        <receiver android:name="fr.cls.mobility.myclsdroiddata.service.android.OnNetworkStateChangedReceiver_">
            <intent-filter>
                <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
                <action android:name="android.net.wifi.STATE_CHANGE"/>
            </intent-filter>
        </receiver>
        <receiver android:name="fr.cls.mobility.myclsdroiddata.service.android.OnAlarmReceiver_"/>


    </application>

</manifest>

您尚未在清单中为接收方指定意图筛选器。如果没有意图过滤器,它不知道何时触发,或者需要显式调用它

<receiver android:name="fr.cls.mobility.myclsdroiddata.service.android.OnAlarmReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.YOUR_INTENT_ACTION" />
        <!--If you want to watch network connectivity state-->
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>
Intent intent = new Intent(getApplicationContext(), fr.cls.mobility.myclsdroiddata.service.android.OnAlarmReceiver.class);
sendBroadcast(intent);`

在我的计划中

我有:

Intent alarmIntent = new Intent();
alarmIntent.setClassName("fr.cls.mobility.service.android", "OnAlarmReceiver_");
而不是

Intent alarmIntent = new Intent(context, OnAlarmReceiver_.class);
现在它开始工作了。
谢谢您的回答。

您确定闹钟的时间和类型正确吗?清单中的
元素在哪里?它需要位于
标记之间,但不在任何其他标记内,如
。感谢您的评论。我检查过了,似乎还可以。我添加了连接更改行的意图过滤器。对于意图操作,它已经由代码完成。但仍然不起作用。
Intent alarmIntent = new Intent(context, OnAlarmReceiver_.class);