に呼び出されていないすべてのあなたの助けを事前にありがとうございます、私の英語のため申し訳ありませんが、それは私の状況ですが、私はブロードキャストレシーバーを持っている:onReceiveサービス
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class BootReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent();
serviceIntent.setAction("com.mypack.service.RicordaPrenotazione");
context.startService(serviceIntent);
}
}
<receiver android:name=".service.BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
この放送受信機の起動を打ち上げ、このサービス完了したとき:この時点で
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import org.json.JSONException;
import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
public class RicordaPrenotazione extends Service {
public static final String PREFERENCES = "Pref";
public static final String PREF_CODPAZIENTE = "codice paziente";
public static final String PREF_NOME = "nome";
public static final String PREF_COGNOME = "cognome";
public static final String PREF_CF = "codice fiscale";
public static final String PREF_TS = "tessera sanitaria";
public static final String PREF_DATA = "data scadenza";
private final static String LOG_TAG = "LocalService";
private static final int NOTIFICATION = 1;
private NotificationManager notificationManager;
private Notification notification;
private PendingIntent pIntent;
private AlarmManager alarmManager;
private Calendar calendar;
private int notificationNumber;
String codPaziente, nome, cognome, codiceFiscale, tesseraSanitaria, dataScadenza,response;
String[] codicePrenotazione,name, surname, descEsame, descSpecialita, descAmbulatorio, descAvvertenza , dataAppuntamento, oraAppuntamento, statoPrenotazione;
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
WebService webService = new WebService();
int numPrenotazioni;
int count;
@Override
public void onCreate() {
super.onCreate();
SharedPreferences prefs = getSharedPreferences(PREFERENCES,0);
codPaziente = prefs.getString(PREF_CODPAZIENTE, "NESSUN CODICE");
nome = prefs.getString(PREF_NOME, "NESSUN");
cognome = prefs.getString(PREF_COGNOME, "PROFILO");
codiceFiscale = prefs.getString(PREF_CF, "XXXXXX00X00X000X");
tesseraSanitaria = prefs.getString(PREF_TS, "00000000000000000000");
dataScadenza = prefs.getString(PREF_DATA, "GG-MM-AAAA");
count = 0;
try {
mylist = webService.recuperaPrenotazioni(codPaziente.trim());
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i(LOG_TAG, "Service Destroyed");
}
@Override
public IBinder onBind(Intent arg0) {
// Ritorno null in quanto non si vuole permettere
// l'accesso al servizio da una applicazione diversa
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startid) {
if(mylist.isEmpty())
{
Toast.makeText(getApplicationContext(),"Nessuna prenotazione trovata!", Toast.LENGTH_LONG).show();
}
else{
numPrenotazioni = mylist.size();
for(int j=0; j<numPrenotazioni; j++){
if(mylist.get(j).get("statoPrenotazione").toString().equals("1")){
count++;
createAlarm(mylist.get(j).get("codicePrenotazione").toString(),mylist.get(j).get("descEsame").toString(),mylist.get(j).get("dataAppuntamento").toString(),mylist.get(j).get("oraAppuntamento").toString(),count);
}
}
}
// Solo per debugging
Log.i(LOG_TAG, "Service Started");
return super.onStartCommand(intent, flags, startid);
}
public void createAlarm (String codicePrenotazioneA, String descEsameA, String dataAppuntamentoA, String oraAppuntamentoA, int count)
{
Calendar cal = Calendar.getInstance();
String[] temp = dataAppuntamentoA.split(" ");
String[] temp2 = oraAppuntamentoA.split(" ");
String[] tempData = temp[0].split("-");
String[] tempOra = temp2[1].split(":");
cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(tempData[2]));
cal.set(Calendar.MONTH, Integer.parseInt(tempData[1]));
cal.set(Calendar.YEAR, Integer.parseInt(tempData[0]));
cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(tempOra[0])-1);
cal.set(Calendar.MINUTE, Integer.parseInt(tempOra[1]));
String ALARM_ACTION = "com.mypack.service.MemoPrenotazione";
Intent alarmintent = new Intent(ALARM_ACTION);
alarmintent.putExtra("codPaziente",codPaziente);
alarmintent.putExtra("nome",nome);
alarmintent.putExtra("cognome",cognome);
alarmintent.putExtra("codicePrenotazione", codicePrenotazioneA);
alarmintent.putExtra("descEsame", descEsameA);
alarmintent.putExtra("dataAppuntamento", dataAppuntamentoA);
alarmintent.putExtra("oraAppuntamento", oraAppuntamentoA);
alarmintent.putExtra("count", count);
PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(), NOTIFICATION,
alarmintent,PendingIntent.FLAG_UPDATE_CURRENT| Intent.FILL_IN_DATA);
AlarmManager am = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
}
}
<service android:name=".service.RicordaPrenotazione">
<intent-filter>
<action android:name="com.mypack.service.RicordaPrenotazione" />
</intent-filter>
</service>
をブートは、放送受信機は、イベントをキャッチし、サービスを起動完了し、問題は今、この時にすべてが、okですサービスは、AlarmManagerを特定の時間に設定する必要があります通知を作成し、他の放送受信機でキャッチする必要がありますpendingintentを起動し、これはコードです:
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
public class MemoPrenotazione extends BroadcastReceiver {
public static int NOTIFICATION_ID = 1;
String title, note, codPaziente, nome, cognome;
String codicePrenotazione, descEsame, dataAppuntamento, oraAppuntamento;
int count;
private NotificationManager manger;
private Notification notification;
private PendingIntent contentIntent;
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
codPaziente = extras.getString("codPaziente");
nome = extras.getString("nome");
cognome = extras.getString("cognome");
codicePrenotazione = extras.getString("codicePrenotazione");
descEsame = extras.getString("descEsame");
dataAppuntamento = extras.getString("dataAppuntamento");
oraAppuntamento = extras.getString("oraAppuntamento");
count = extras.getInt("count");
title = "Memo Prenotazione";
note = descEsame + " il " + dataAppuntamento + " alle "
+ oraAppuntamento;
manger = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
int icon = R.drawable.icon;
CharSequence tickerText = "Memo prenotazione";
long when = System.currentTimeMillis();
notification = new Notification(icon, tickerText, when);
Intent i = new Intent(context, HttpGetTaskActivity.class);
Bundle b = new Bundle();
b.putString("codPaziente", codPaziente);
b.putString("nome", nome);
b.putString("cognome", cognome);
i.putExtras(b);
contentIntent = PendingIntent.getActivity(context, NOTIFICATION_ID, i,
PendingIntent.FLAG_UPDATE_CURRENT);
notification.setLatestEventInfo(context, title, note, contentIntent);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.defaults |= Notification.DEFAULT_SOUND; // Suona
notification.defaults |= Notification.DEFAULT_LIGHTS; // LED
notification.defaults |= Notification.DEFAULT_VIBRATE; // Vibra
manger.notify(NOTIFICATION_ID, notification);
}
}
<receiver android:name=".service.MemoPrenotazione">
<intent-filter>
<action android:name="com.mypack.service.MemoPrenotazione" />
</intent-filter>
</receiver>
私は問題は通知がないので、最後の放送受信が正常に呼び出されていないということだと思い作成した。 誰かが私を助けることができますか?
私は私のマニフェストに次の操作を行います。 <受信機アンドロイド:名= "service.MemoPrenotazione "> <意図-フィルタ> <アクションアンドロイド:名=" com.mypack.service.MemoPrenotazioneが" /> intent-filter> 正しくないですか? – user1187793
ソースファイル内のパッケージ定義が表示されません。名前に.service部分が必要ないとは思わない。 name = "。MemoPrenotazione"とname = "。BootReceiver"が動作するはずです。 – mcnicholls
私のパッケージは:package com.mypackage.service;この理由のために私は名前の.service部分を必要とします – user1187793