1

私の英語のために申し訳ありません。私は通知のためにGCMを使用します、サーバーはjsonを使用します。GCMフォームthis問題:アプリが開いているときに、通知があり、すべての意図がうまく処理され、余分な作業がうまくいっています。しかし、アプリケーションが閉じられ、私は通知を得るとき、私はこの通知からアプリを起動するスタンダードアクティビティをクリックしたとき(私が設定したアクティビティではない)これは、アンドロイドが閉じている場合、アンドロイドが独自の通知を作成し、 enotherの意図と活動については、彼はアプリでstandart活動を開きます。「プラットフォームGCMによる通知メッセージのパラメータ」

<intent-filter> 
    <action android:name="OPEN_ACTIVITY_1" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 

Qestion:?アンドロイドは独自のプッシュを作成するときに、私はputExtraを使用傾ける方法(通知のための私のクラスを使用しない)この問題を解決するには、このような何かをサーバーclick_actionから送信する必要があり、マニフェストを必要としています

UPD: クラス通知(問題ないここ)を作成します。

public class GcmMessageHandler extends GcmListenerService { 

    static int count = 0; 

    @Override 
     public void onMessageReceived(String from, Bundle data) { 
String name = notification.getString("title"); 
String message = notification.getString("body"); 

Resources res = ctx.getResources(); 
      PowerManager pm = (PowerManager) ctx.getSystemService(Context.POWER_SERVICE); 
      PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); 
      wl.acquire(15000); 

      NotificationCompat.Builder mBuilder; 
      mBuilder = new NotificationCompat.Builder(ctx); 

      mBuilder.setSmallIcon(R.drawable.notification); 
      mBuilder.setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.icon)); 

      mBuilder.setVibrate(new long[]{1000, 1000}); 
      mBuilder.setTicker(name + ":" + message); 
      mBuilder.setContentText(message); 
      mBuilder.setContentTitle(name); 
      mBuilder.setAutoCancel(true); 
      mBuilder.setDefaults(Notification.DEFAULT_ALL); 
      mBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(message)); 


      Intent i = new Intent(getApplicationContext(), Activity2.class); 
      i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 


      PendingIntent resultPendingIntent = 
        PendingIntent.getActivity(
          ctx, 
          count, 
          i, 
          PendingIntent.FLAG_UPDATE_CURRENT); 


      mBuilder.setContentIntent(resultPendingIntent); 
      NotificationManager myNotificationManager = (NotificationManager) 
        ctx.getSystemService(ctx.NOTIFICATION_SERVICE); 

      myNotificationManager.notify(count, mBuilder.build()); 
} 

} 

UPDマニフェスト(私は許可し、GCMを使用)

<!-- GCM --> 
     <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
     <uses-permission android:name="android.permission.WAKE_LOCK" /> 
     <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 

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

     <permission android:name="myapp.permission.C2D_MESSAGE" 
      android:protectionLevel="signature" /> 
     <uses-permission android:name="myapp.permission.C2D_MESSAGE" /> 
     <!-- GCM END --> 



    <!-- GCM --> 
    <receiver 
     android:name="com.google.android.gms.gcm.GcmReceiver" 
     android:exported="true" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <category android:name="myapp" /> 
     </intent-filter> 
    </receiver> 

    <service android:name="push.GcmMessageHandler" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     </intent-filter> 
    </service> 

    <meta-data android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 

    <!-- GCM --> 

答えて

1

あなたは、通知に

private void sendNotification(String from, String message) { 
     Bundle bundle = new Bundle(); 
     bundle.putString("name", from); 
     bundle.putString("message", message); 
     Intent intent = new Intent(this, ChatActivity.class); 
     intent.putExtra("INFO", bundle); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); 
     Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder builder = new NotificationCompat.Builder(this) 
       .setContentTitle(from) 
       .setSound(defaultSoundUri) 
       .setContentText(message) 
       .setSmallIcon(R.drawable.ic_notification) 
       .setAutoCancel(true) 
       .setContentIntent(pendingIntent); 

     NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     notificationManager.notify(0, builder.build()); 
    } 

とマニフェストファイルにWAKE_LOCK権限を追加することを忘れないでください送信するには、このいずれかを使用できます。

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
+0

あなたのお返事ありがとうございます!私は自分のqestionを更新します。プッシュ作業のためのクラスは、アプリケーションが閉じられているときにアプリケーションが閉じられているときのみ開かれます。 'Activity2.class'は開いていません。そして、gcmは活動や意図を見ることなく、エクストラを置く。私は、アプリケーションが閉じられたときに 'putExtra'をどのように使うのか分かりません。 – b1065579

+0

上記の権限を追加しましたか?まだOKでない場合は –

+0

です。あなたのAndroidManifest.xmlのコードを投稿してください。 –

関連する問題