2016-05-03 13 views
1

私がインテントまたはpendingIntent自体に入れたフラグにもかかわらず、私のpendingIntentはサービスに特別なことを何も持っていません。pendingIntentは、フラグにもかかわらず、エキストラを送信しません。

DrawerActivity.class:

@Override 
public void registerAlarmTask(Calendar time, String title, int iconId) { 

    int requestId = (int) System.currentTimeMillis(); 

    Intent intent = new Intent(this, AlarmReceiver.class); 
    intent.putExtra("title",title); 
    intent.putExtra("icon", iconId); 
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    intent.setAction("alarm"); 
    PendingIntent pIntent = PendingIntent.getBroadcast(this, requestId, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE); 

    Calendar newTime = Calendar.getInstance(); 
    newTime.set(Calendar.MINUTE, time.get(Calendar.MINUTE)-1); 

    alarm.set(AlarmManager.RTC_WAKEUP, newTime.getTimeInMillis(), pIntent); 
    Log.w(TAG, "Alarm created! " + newTime.toString()); 
} 

そしてNotificationServiceからStartCommandの方法:

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

     NotificationCompat.Builder nBuilder = new NotificationCompat.Builder(this); 
     Log.w(TAG, "Icon ID: " + intent.getIntExtra("icon", 404) + "/Title: " + intent.getStringExtra("title")); 
     nBuilder.setSmallIcon(intent.getIntExtra("icon", R.drawable.ic_event_new)); 
     nBuilder.setContentTitle(intent.getStringExtra("title")); 
     nBuilder.setContentText("A partida irá começar em instantes..."); 
     nBuilder.setTicker("Sua partida no Destiny está prestes a começar!"); 
     nBuilder.setAutoCancel(true); 

     NotificationManager nManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     nManager.notify(0, nBuilder.build()); 

    Log.w(TAG, "Notification Service started!"); 
    Toast.makeText(this, "Notification Service started!", Toast.LENGTH_SHORT).show(); 

    return super.onStartCommand(intent, flags, startId); 
} 

意図からエキストラは関係なくrequestId、意図フラグや私が入れpendingIntentフラグ、常にnullではありません。

ここで私は間違っていますか?私はたくさんの検索をしましたが、答えは見つかりませんでした。

よろしく、 ルーカスセネ

+0

私はこの同じ問題を抱え、しばらくの間、壁に頭を当てて動作させました。おそらく、保留中の意図に対して有効にするフラグがありますが、文書化されているにもかかわらず、私のためにはうまく動作しません。代わりに、私は適切に提供されたメソッドを介してデータを送信するためにPendingIntentを取得することができなかったので、ローカルのSQL Liteデータベースを使用して終了しました。私はあなたのために、技術的な答えがありました。 –

+0

あなたの 'PendingIntent'は' BroadcastReceiver'にブロードキャストしています。そこから 'Service'が開始されているはずです。 Receiverに渡された 'Intent'に付加された追加物は' Service'を開始するために使用される 'Intent'に添付される必要があります。自動的に転送されることはありません。 –

答えて

0

マイクM.はコメントで言ったように、私はちょうどBroadcastReceiverからサービスへの意向余分を渡すのを忘れていました。はい、愚かな間違いです...

ありがとうございました!

関連する問題