Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
antch
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 6
1

Обновление WebWiev по нажатию на уведомление

13.01.2014, 14:23. Просмотров 658. Ответов 5
Метки нет (Все метки)

Как при нажатии на уведомление обновить страницу WebWiev в открытом Activity?
Есть сервис, который создает уведомление, по нажатию на которое отрывается Activity в onResume() которого обновляется страница WebWiev. Как обновить страницу WebWiev если Activity уже запущено? Событие onResume() не происходит

Сервис создает уведомление:
Кликните здесь для просмотра всего текста
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
void sendNotif(boolean with_sound) {
    Context context = getApplicationContext();
    NotificationManager nm = (NotificationManager) context 
        .getSystemService(Context.NOTIFICATION_SERVICE);        
    Notification.Builder builder = new Notification.Builder(context);
    Intent WievAppIntent = new Intent(this, WievActivity.class);
    PendingIntent pIntent;
    if (with_sound) {
        pIntent = PendingIntent.getActivity(context, 0, WievAppIntent, PendingIntent.FLAG_CANCEL_CURRENT);
    }
    else {
        pIntent = PendingIntent.getActivity(context, 1, WievAppIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    }
    builder.setContentIntent(pIntent)
            .setWhen(System.currentTimeMillis());
            
    if (with_sound) {
        builder.setDefaults(Notification.DEFAULT_ALL)
            .setAutoCancel(true)
            .setTicker(getString(R.string.stat_title))
            .setContentTitle(getString(R.string.title))
            .setContentText(getString(R.string.note_text))
            .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_new_call))
            .setSmallIcon(R.drawable.ic_new_call_small);
    }
    else {
        builder.setTicker(getString(R.string.stat_title_no))
        .setContentTitle(getString(R.string.title_no))
        .setContentText(getString(R.string.note_text_no))
        //.setLargeIcon(BitmapFactory.decodeResource(res, R.drawable.cat))
        .setSmallIcon(R.drawable.ic_launcher);          
    }
 
    @SuppressWarnings("deprecation")
    Notification n = builder.getNotification();
//  n.flags |= Notification.FLAG_SHOW_LIGHTS;
//  n.ledARGB = 0xff00ff00;
//  n.ledOnMS = 300;
//  n.ledOffMS = 1000;
    if (with_sound) {
        nm.notify(2, n);
    }
    else {
        startForeground(1, n);
    }
}


Код Activity
Кликните здесь для просмотра всего текста
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.example.ssmp;
 
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.http.SslError;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Window;
import android.webkit.CookieSyncManager;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
import android.webkit.WebViewClient;
 
public class WievActivity extends Activity {
    //private static final String LOG_TAG ="ssmp_log";
    private String APP_PREFERENCES = "ssmp_settings"; 
    private SharedPreferences mSettings;
    private String SrvName;
    
    private WebView wv;
    //private Context context;
    
    private String GetSrvName() {
        String val="";
        if (mSettings.contains("ip_server")) {
            val = mSettings.getString("ip_server", "");
        }
        return val; 
    }
    
    private class HelloWebViewClient extends WebViewClient 
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) 
        {
            view.loadUrl(url);
            return true;
        }
        @Override
        public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) {
            handler.proceed() ;
        }
    }
 
    @Override
    protected void onResume() {
        Log.d("1111111111111111", "onResume WievActivity!!!!!");
        super.onResume();
        loadSsmpUrl();
    }
 
//  @Override
//  protected void onPause() {
//      super.onPause();
//  }
 
    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);
        mSettings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
        wv = (WebView)findViewById(R.id.webView1);
        wv.setWebViewClient(new HelloWebViewClient());
        wv.getSettings().setJavaScriptEnabled(true);// включаем поддержку JavaScript
        wv.getSettings().setUseWideViewPort(true);
        wv.getSettings().setAppCacheEnabled(true);
        wv.getSettings().setSupportZoom(true);
        //wv.getSettings().setBuiltInZoomControls(true);
        wv.setInitialScale(1);
        CookieSyncManager.createInstance(getApplicationContext());
        SrvName = GetSrvName();
    }
 
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         Log.d("1111111111111111", "onActivityResult WievActivity!!!!!");
        super.onActivityResult(requestCode, resultCode, data);
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) {
            wv.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    public void loadSsmpUrl(){
        CookieSyncManager.getInstance().sync();
        wv.loadUrl(getString(R.string.ssmp_url_prefix) + SrvName +"/base/calls/");// указываем страницу загрузки
    }
}


Подскажите пожалуйста, как обновить страницу WebWiev если Activity уже запущено?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2014, 14:23
Ответы с готовыми решениями:

Открыть скрытое окно по нажатию на уведомление
Ситуация такая, я запускаю приложение, оно дает уведомление что запущено,...

Обновление/перезапуск layout по нажатию
необходимо, чтобы по нажатию обновлялся/перезапускался layout. как организовать?

Автоматическое обновление формы и уведомление стандартным звуком
Здравствуйте! Прошу подсказать и возможно решить следующую проблему. Имеется...

Обновление формы по нажатию F5
Всем привет!!! Подскажите, пожалуйста, как обновить форму по нажатию F5 (как...

Обновление элемента по нажатию кнопки
Добрый день, Решил сделать возможность обновления капчи для формы <form...

5
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
13.01.2014, 15:21 2
antch, По нажатию на уведомление есть два сценария:
Если активити ещё не запущена - срабатывает - onCreate-onStart-onResume.
Если активити уже запущена - срабатывает метод onNewIntent() API

Переопределите этот метод и делайте, что Вам надо.
1
antch
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 6
13.01.2014, 15:55  [ТС] 3
Спасибо YuraAAA, добавил в код Activity
Java
1
2
3
4
5
6
@Override
    protected void onNewIntent(Intent intent) {
        Log.d("1111111111111111", "onNewIntent WievActivity!!!!!");
        loadSsmpUrl();      
        super.onNewIntent(intent);
    }
Событие не возникает

Добавлено через 7 минут
возникло это событие когда при создании уведомления добавил флаг FLAG_ACTIVITY_SINGLE_TOP
Java
1
2
3
4
5
..........
Intent WievAppIntent = new Intent(this, WievActivity.class);
WievAppIntent.addFlags(WievAppIntent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pIntent;
...........
но теперь возникают оба события: и onResume и onNewIntent

Добавлено через 14 минут
Проблема решилась, добавил в манифест android:launchMode="singleInstance" для Activity. Теперь OnResume срабатывает всегда
з.ы. убрал добавление флага FLAG_ACTIVITY_SINGLE_TOP
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
13.01.2014, 15:57 4
antch, логично) У Вас получилась куча инстансов активити)
0
antch
0 / 0 / 0
Регистрация: 13.01.2014
Сообщений: 6
13.01.2014, 16:12  [ТС] 5
Я же правильно сделал?
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
13.01.2014, 16:30 6
antch, да.
0
13.01.2014, 16:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2014, 16:30

Обновление картинки по нажатию кнопки
Есть: кнопка картинка сервлет, возвращающий картинку Нужно: По нажатии...

Обновление информации на листе по нажатию кнопки
Добрый вечер. Как можно сделать копку "Обновить" в excel что бы не закрывая...

Обновление формы (Access) по нажатию кнопки
Есть форма и связанная с ней подчинённая форма. На основной форме есть поля и...


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

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

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