Java android接收器未被调用
我有一个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
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);