Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Nasdomlan
1 / 1 / 1
Регистрация: 21.10.2013
Сообщений: 110
#1

Как открыть PUSH в активити? - Программирование Android

08.04.2016, 01:10. Просмотров 392. Ответов 10
Метки нет (Все метки)

Суть вопроса в том,что я не могу понять как по клику на Пуш,у человека открывалось MainActivity с полным пушем.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.developerhouse.push;
import com.google.android.gms.gcm.GcmListenerService;
 
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
 
public class MyGcmListenerService extends GcmListenerService {
 
    public static final int MESSAGE_NOTIFICATION_ID = 435345;
    private NotificationManager mNotificationManager;
 
    @Override
    public void onMessageReceived(String from, Bundle data) {
        String message = data.getString("message");
 
        createNotification( message);
    }
        // Creates notification based on title and body received
    private void createNotification( String body) { 
        mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 
        Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        long[] pattern = {500};
 
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
              new Intent(this, MainActivity.class), 0);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
              this).setSmallIcon(R.drawable.notify)
              .setContentTitle("UrbanSide PUSH").setVibrate(pattern)
              .setStyle(new NotificationCompat.BigTextStyle().bigText(body))
              .setContentText(body)
        .setAutoCancel(true).setSound(sound);
 
        mBuilder.setContentIntent(contentIntent);
        mNotificationManager.notify(MESSAGE_NOTIFICATION_ID, mBuilder.build());
 
 
 
    }
 
}
MainActivity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package com.developerhouse.push;
 
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
 
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.widget.Toast;
 
public class MainActivity extends Activity {
     private static final String TAG = "MainActivity";
  
    public static String newRegID="";
 
    private BroadcastReceiver mRegistrationBroadcastReceiver;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
   
        mRegistrationBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
               
                SharedPreferences sharedPreferences =
                        PreferenceManager.getDefaultSharedPreferences(context);
                String sentToken = sharedPreferences
                        .getString(Constants.PREF_GCM_REG_ID, "");
                 if (sentToken.equals("")) {
                   Toast.makeText(MainActivity.this, "Failed to save on server", Toast.LENGTH_SHORT).show();
                } else {
                     Toast.makeText(MainActivity.this,  "Succesfully saved on server",  Toast.LENGTH_SHORT).show();
                }
            }
        }; 
        if (checkPlayServices()) {
 
            Intent intent = new Intent(this, RegistrationIntentService.class);
            startService(intent);
        }
      
    }
     @Override
        protected void onResume() {
            super.onResume();
            LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                    new IntentFilter(Constants.SERVER_SUCCESS));
        }
 
        @Override
        protected void onPause() {
            LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver);
            super.onPause();
        }
 
        private boolean checkPlayServices() {
            int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
            if (resultCode != ConnectionResult.SUCCESS) {
                if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
                    GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                            9000).show();
                } else {
                    Log.i(TAG, "This device is not supported.");
                    finish();
                }
                return false;
            }
            return true;
        }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2016, 01:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как открыть PUSH в активити? (Программирование Android):

Как открыть активити с фрагмента используя кнопку? - Программирование Android
У меня есть tab activity в ней есть фрагменты, так же есть второе tab activity и мне нужно с фрагмента из первого активити перейти во...

Как с ListFragment передать имя файла чтобы открыть его в другом Активити? - Программирование Android
Всем привет, я новичек! ломаю голову над такой задачей: Есть ListFragment со списком "приборов" мне надо при нажатии на нужный прибор...

Как вызвать метод в активити классе из обычного не активити класса? - Программирование Android
Есть активити в котором вводятся логин и пароль. При нажатии кнопки "войти" в отдельном классе "сокетсервер"(+в отдельном потоке)...

Открыть второй активити - Программирование Android
Раньше проблем с открытием второго активити через нажатие на кнопку не было. Создал xml, class, в манифесте прописал. Что-то упустил?

Открыть картинку в новом активити - Программирование Android
Приветствую уважаемые разрабы. Сразу извиняюсь если написал не в той ветке. Задача такая : есть 2 бланка активити : на первом несколько...

Открыть активити не из главного класса - Программирование Android
привет всем. ситуация такая: есть класс (обычный класс с методами) в котором в потоке допустим выполняются какие-либо действия. и в...

10
urayatsko
15 / 15 / 8
Регистрация: 08.04.2015
Сообщений: 36
08.04.2016, 10:08 #2
Что то не понятно, какой полный пуш?
0
Nasdomlan
1 / 1 / 1
Регистрация: 21.10.2013
Сообщений: 110
08.04.2016, 10:21  [ТС] #3
Я имею ввиду,чтобы если пуш не влез в строку уведомлений,чтобы его можно было весь вывести в активити.
0
urayatsko
15 / 15 / 8
Регистрация: 08.04.2015
Сообщений: 36
08.04.2016, 10:42 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Nasdomlan, здесь только остается передаться с помощью putExtra информацию а в самом активити ее получить и показать.
0
Nasdomlan
1 / 1 / 1
Регистрация: 21.10.2013
Сообщений: 110
08.04.2016, 11:00  [ТС] #5
urayatsko, хммм...попробую сообразить.Просто я в этом новичок,тяжело дается)
Хотя думаю что не выйдет)
Ибо не соображу как передавать это все именно по клику на активити то есть:
Приходит пуш -> нажимаем -> открывается активити с текстом пуша

Добавлено через 10 минут
Java
1
2
3
4
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("body", body);
 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);
Посоветовали так,но все равно черный экран
0
urayatsko
15 / 15 / 8
Регистрация: 08.04.2015
Сообщений: 36
08.04.2016, 11:12 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Nasdomlan, все получиться, переделаный ваш метод.


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
       private void createNotification( String body) { 
        mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
 
        Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        long[] pattern = {500};
 
        /*Сосздаем интент*/
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        /*передаем наш текст по ключю - text */
        intent.putExtra("text", body);
 
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
              intent, 0);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
              this).setSmallIcon(R.drawable.notify)
              .setContentTitle("UrbanSide PUSH").setVibrate(pattern)
              .setStyle(new NotificationCompat.BigTextStyle().bigText(body))
              .setContentText(body)
        .setAutoCancel(true).setSound(sound);
 
        mBuilder.setContentIntent(contentIntent);
        mNotificationManager.notify(MESSAGE_NOTIFICATION_ID, mBuilder.build());
 
 
 
    }
Ну и в самом активити получаем данные.

Java
1
2
3
4
5
        Intent intent = getIntent();
       
        if(intent.getStringExtra("text")!=null){
                  String text = intent.getStringExtra("text");
        }
Добавлено через 4 минуты
Nasdomlan, напишите получилось или нет
1
Nasdomlan
1 / 1 / 1
Регистрация: 21.10.2013
Сообщений: 110
08.04.2016, 11:16  [ТС] #7
Не хочет он его почему то в main активити подключать.
Я думаю,может проще например в класс ViewNotify его кинуть?У меня он как раз пустой...
0
urayatsko
15 / 15 / 8
Регистрация: 08.04.2015
Сообщений: 36
08.04.2016, 11:20 #8
Активити открывается но ничего не передаеться?
0
Nasdomlan
1 / 1 / 1
Регистрация: 21.10.2013
Сообщений: 110
08.04.2016, 11:22  [ТС] #9
Я просто честно не понял даже,как его к мейну подключить...
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package com.developerhouse.push;
 
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
 
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.widget.Toast;
 
public class MainActivity extends Activity {
     private static final String TAG = "MainActivity";
  
    public static String newRegID="";
 
    private BroadcastReceiver mRegistrationBroadcastReceiver;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
   
        mRegistrationBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
               
                SharedPreferences sharedPreferences =
                        PreferenceManager.getDefaultSharedPreferences(context);
                String sentToken = sharedPreferences
                        .getString(Constants.PREF_GCM_REG_ID, "");
                 if (sentToken.equals("")) {
                   Toast.makeText(MainActivity.this, "Failed to save on server", Toast.LENGTH_SHORT).show();
                } else {
                     Toast.makeText(MainActivity.this,  "Succesfully saved on server",  Toast.LENGTH_SHORT).show();
                }
            }
        }; 
        if (checkPlayServices()) {
 
            Intent intent = new Intent(this, RegistrationIntentService.class);
            startService(intent);
        }
      
    }
     @Override
        protected void onResume() {
            super.onResume();
            LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
                    new IntentFilter(Constants.SERVER_SUCCESS));
        }
 
        @Override
        protected void onPause() {
            LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver);
            super.onPause();
        }
 
        private boolean checkPlayServices() {
            int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
            if (resultCode != ConnectionResult.SUCCESS) {
                if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
                    GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                            9000).show();
                } else {
                    Log.i(TAG, "This device is not supported.");
                    finish();
                }
                return false;
            }
            return true;
        }
        
}
Я понимаю,что туплю по страшному,но если не задавать вопросы,сложно что то выучить)
0
urayatsko
15 / 15 / 8
Регистрация: 08.04.2015
Сообщений: 36
08.04.2016, 11:28 #10
Нам нужно в методе onCreate получить данные из Intent.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
   
         /*Это по сути все что нужно добавить в Активити*/
         Intent myIntent = getIntent();
        if(intent.getStringExtra("text")!=null){
                  String text = intent.getStringExtra("text");
        }
 
        mRegistrationBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
               
                SharedPreferences sharedPreferences =
                        PreferenceManager.getDefaultSharedPreferences(context);
                String sentToken = sharedPreferences
                        .getString(Constants.PREF_GCM_REG_ID, "");
                 if (sentToken.equals("")) {
                   Toast.makeText(MainActivity.this, "Failed to save on server", Toast.LENGTH_SHORT).show();
                } else {
                     Toast.makeText(MainActivity.this,  "Succesfully saved on server",  Toast.LENGTH_SHORT).show();
                }
            }
        }; 
        if (checkPlayServices()) {
 
            Intent intent = new Intent(this, RegistrationIntentService.class);
            startService(intent);
        }
      
    }
1
Nasdomlan
1 / 1 / 1
Регистрация: 21.10.2013
Сообщений: 110
08.04.2016, 11:50  [ТС] #11
intent cannot be resolved
MainActivity.java /AndroidPush/src/com/developerhouse/push line 33
Вот такое получаю...

Добавлено через 15 минут
Заменил на myIntent как советовал Eclipse, теперь при клике на пуш даже пустая активность не открывается
0
08.04.2016, 11:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2016, 11:50
Привет! Вот еще темы с ответами:

Открыть старое активити при клике на уведомление - Программирование Android
Добрый день. Есть такая штука: создается уведомление, оно появляется, при этом приложение по сути закрывается finish(); Далее при...

Открыть активити при нажатии на элемент Listview - Программирование Android
Здравствуйте, в андроид-программирование не давно, подскажите пожалуйста как, чтобы при нажатии на один элемент списка listview открывалась...

При нажатии на пункт меню открыть новое активити - Программирование Android
Как сделать на андроид 4.0 чтобы при нажатии на пункт меню открывалось новое активити? Всплывающий Toast я смог сделать. но надо сделать...

На телефоне highscreen 3 на всех активити происходит быстрый самовозврат к главной активити - Программирование Android
Сделал меню в виде ListView. При клике на меню запускаются активити. На эмуляторе работает, на телефоне моем LG все работает. На телефоне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru