2015-09-17 3 views
1

Извините за мой английский. Я создаю пользовательские уведомления (используйте parse.com и lib). Я хочу так: я получаю уведомления -> нажмите эту кнопку -> открыть новую активность. Я трачу много раз, чтобы исправить это, но не имел успеха. Мой код:Невозможно открыть активность onPushOpen (parse.com)

public class Receiver extends ParsePushBroadcastReceiver { 

    NotificationCompat.Builder mBuilder; 
    int mNotificationId = 001; 


    @Override 
    public void onPushOpen(Context context, Intent intent) { 
     ParseAnalytics.trackAppOpenedInBackground(intent); 

     Intent i = new Intent(context, Main.class); 
     i.putExtras(intent.getExtras()); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
    } 


    @Override 
    public void onReceive(Context context, Intent intent) { 

     PendingIntent resultPendingIntent = PendingIntent.getActivity(context, 
       0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 


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

     mBuilder = new NotificationCompat.Builder(context); 
     mBuilder.setVibrate(new long[]{1000, 1000}); 
     mBuilder.setSmallIcon(R.drawable.icon); //You can change your icon 
     mBuilder.setContentText("Content"); 
     mBuilder.setContentTitle("Title"); 
     mBuilder.setSound(Uri.parse("android.resource://" + context.getPackageName() + "/" + R.raw.beep1)); 
     mBuilder.setAutoCancel(true); 

     mBuilder.setContentIntent(resultPendingIntent); 

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

     notificationManager.notify(mNotificationId, mBuilder.build()); 


    } 
} 

Manifest

<receiver android:name=".Receiver" 
    android:exported="false"> 
    <intent-filter> 
     <action android:name="com.parse.push.intent.RECEIVE" /> 
     <action android:name="com.parse.push.intent.DELETE" /> 
     <action android:name="com.parse.push.intent.OPEN" /> 
    </intent-filter> 
</receiver> 

ответ

1

Вы можете запустить новое мероприятие, которое может отображать новое уведомление на экране или макете.

Для этого перейдите на ParseApplication.java

public class ParseApplication extends Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Parse.initialize(this, keys.applicationId, keys.clientKey); 
     PushService.setDefaultPushCallback(this, NewActivity.java); 
     ParseInstallation.getCurrentInstallation().saveEventually(); 
    } 

В принципе, когда все вы получите уведомление и пользователь нажимает, он загружает NewActivity.java, который в свою очередь, открывает файл XML.

Теперь в NewActivity.java идти к своему onCreate в том, что в setContentView

setContentView(R.layout.**layout name**); 

поместить файл XML.

Не забудьте добавить активность в манифест.

1

Я могу открыть предполагаемую активность, используя следующий фрагмент кода!

@Override 
    protected void onPushOpen(Context context, Intent intent) { 
     try { 
      super.onPushOpen(context, intent); 
      ParseAnalytics.trackAppOpenedInBackground(intent); 
      PushService.setDefaultPushCallback(context, NewFragment.class); 
      ParseAnalytics.trackAppOpenedInBackground(intent); 
      Intent i = new Intent(context, NewFragment.class); 
      i.putExtras(intent.getExtras()); 
      i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 
     } catch (Exception e) { 
      Log.d(TAG, "onPushOpen Error : " + e); 
     } 
    } 
Смежные вопросы