Форум программистов, компьютерный форум CyberForum.ru

Передать String в AsyncTask, получить callback - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Вылетает приложение при запуске http://www.cyberforum.ru/android-dev/thread1678418.html
Здравствуйте. Столкнулся со следующей проблемой. В приложении при запуске подключаются сразу несколько фрагментов, в каждом из которых данные берутся асинхронно. При запуске приложение может работать нормально, а может вылететь, при этом абсолютно непонятно, в чем ошибка и где она возникает. При чем если остановить отладку и еще раз запустить его, ничего не меняя, оно может нормально работать и...
Программирование Android Отправка координат ссылкой Приложение отправляет координаты в смс. на данный момент приходит широта и долгота в виде цифр. как сделать что бы приходила ссылка на google maps. полная ссылка не уходит так как слишком длинная. http://www.cyberforum.ru/android-dev/thread1678400.html
Отправка на email Программирование Android
Здравствуйте, вроде все правильно код написал из примера, отправлять хочу через ящик по smtp.gmail.com, но не отправляет в чем же дело вот код //Отправка на email сообщения public boolean send_email(String email){ MailSenderClass sender = new MailSenderClass(user, password); try { sender.sendMail("blablabla", "12345", user, email); return true;...
Завершить Intent Service Программирование Android
Друзья подскажите пожалуйста, задача такая работает Intent service когда выполняет задачу он запускает другой сервис из которого мне нужно убить старый сервис как это сделать ? использую это stopService(new Intent(service_scan.this, gate_service.class)); Добавлено через 20 минут Сам Activity завершаю командой finish(); а у сервиса какая команда ? Добавлено через 1 час 12 минут Друзья...
Программирование Android Ava.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] link.stuzer.stattrack.data http://www.cyberforum.ru/android-dev/thread1678162.html
// Print out the database as array public String getAllWeapons(){ String dbString = new String; SQLiteDatabase db = getWritableDatabase(); String query = "SELECT * FROM `" + COLUMN_NAME + "` WHERE 1;"; // Cursor point to a location in your result Cursor c = db.rawQuery(query, null); // Move to the first row in your results ...
Программирование Android Как правильно поставить минимальную дату У меня две кнопки. Первый вылета, второй прилета. У даты вылета minDate = today. А у даты прилета minDate должна быть равной выбранной дате на вылета. В onCreate(): final Calendar nextYear = Calendar.getInstance(); nextYear.add(Calendar.YEAR, 1); Date today = new Date(); Date departs; подробнее

Показать сообщение отдельно
zoleg
14 / 14 / 1
Регистрация: 10.01.2012
Сообщений: 138

Передать String в AsyncTask, получить callback - Программирование Android

06.03.2016, 13:12. Просмотров 218. Ответов 5
Метки (Все метки)

Не могу сообразить как одновременно и передать в AsyncTask запрос и возвратить ответ в UI.

Вот код как есть - нужно возвращать закоментированные callback.*

Пробую возвратить // callback.onRecievedMessage(msg); Но пока безуспешно.

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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
public abstract class jabberdSenderAcyncTasker extends AsyncTask<Void, Void, String> {
    public eJabberdSenderInteface callback;
    private String oucoming_Message;
    private Throwable t;
 
    String JABBERSERVER = TetGlobalData.JBS;
    int JABBERPORT = TetGlobalData.JPORT;
    String JABBERDUSER = TetGlobalData.JBU;
    AbstractXMPPConnection jConnection;
    boolean result = true;
    boolean notReply = false;
    private String pseudo_tag="jabberdSenderAcyncTasker";
 
    public jabberdSenderAcyncTasker(String outcoming_mesage) {
 
        super();
 
        oucoming_Message = outcoming_mesage;
    }
protected jabberdSenderAcyncTasker(eJabberdSenderInteface callback) {
    this.callback = (eJabberdSenderInteface) callback;
}
 
 
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
 
    }
 
    protected abstract boolean doAction() throws Exception; // Do redefinition method
 
    @Override
    protected String doInBackground(Void... params) {
        Log.i(pseudo_tag,""+pseudo_tag+" RUN doInBackground");
        XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
        config.setUsernameAndPassword(TetGlobalData.JBU + "@" + TetGlobalData.JBS, TetGlobalData.JBP);
        config.setServiceName(TetGlobalData.JBS);
        config.setHost(TetGlobalData.JBS);
        config.setPort(TetGlobalData.JPORT);
        config.setDebuggerEnabled(true);
        config.setSecurityMode(ConnectionConfiguration.SecurityMode.ifpossible);
        config.setSendPresence(true);
        config.setCompressionEnabled(false);
        // config.setReconnectionAllowed(true);
        // config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
        //config.setRosterLoadedAtLogin(true);
        // config.setSocketFactory(ManagerFactory.getDefault());
        //
        // config.setSASLAuthenticationEnabled(false);
        //config.setSocketFactory(new DummySSLSocketFactory());
        //config.setSecurityMode(ConnectionConfiguration.SecurityMode.ifpossible);
        config.build();
        ///////////////////////////////////////////////////////////////////////////////////////////////////
        SASLMechanism mechanism = new SASLDigestMD5Mechanism();
        SASLAuthentication.registerSASLMechanism(mechanism);
        SASLAuthentication.blacklistSASLMechanism("SCRAM-SHA-1");
        SASLAuthentication.blacklistSASLMechanism("DIGEST-MD5");
        SASLAuthentication.unBlacklistSASLMechanism("PLAN");
//////////////////////////////////////////////////////////////////////////////////////////////////
        // accept all certificate - just for testing
        try {
            TLSUtils.acceptAllCertificates(config);
        } catch (NoSuchAlgorithmException e) {
        } catch (KeyManagementException e) {
        }
//////////////////////////////////////////////////////////////////////////////////////////////////
// verify all hostname - just for testing
        config.setHostnameVerifier(new HostnameVerifier() {
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        });
//////////////////////////////////////////////////////////////////////////////////////////////////
 /*       try {
            SSLContext sc = SSLContext.getInstance("TLS");
            config.setCustomSSLContext(sc);
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalStateException(e);
        }
*/
        XMPPTCPConnection.setUseStreamManagementDefault(true);
        jConnection = new XMPPTCPConnection(config.build());
        jConnection.setPacketReplyTimeout(10000);
        try {
            System.out.println("connecting");
            jConnection.connect();
            System.out.println("connected");
            jConnection.login();
            System.out.println("logged in");
       //     callback.onLogin(true);
        } catch (XMPPException e) {
            e.printStackTrace();
        } catch (SmackException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Log.e(pseudo_tag, "###  jConnection.getStreamId() = " +jConnection.getStreamId()+"");
        if (jConnection.isAuthenticated()) {
            Roster roster = Roster.getInstanceFor(jConnection);
 
            if (!roster.isLoaded()) {
                try {
                    roster.reloadAndWait();
                } catch (SmackException.NotLoggedInException e) {
                    e.printStackTrace();
                } catch (SmackException.NotConnectedException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
 
            Collection<RosterEntry> entries = roster.getEntries();
 
            for (RosterEntry entry : entries)
                System.out.println("Here: " + entry);
            /// Normal connect
            ChatManager chatmanager = ChatManager.getInstanceFor(jConnection);
            ///Create chat
            Chat newChat = chatmanager.createChat(TetGlobalData.JBC + "@" + TetGlobalData.JBS, new ChatMessageListener() {
 
                @Override
                public void processMessage(Chat chat, Message message) {
                    try {
                        chat.sendMessage(message);
                        String from = message.getFrom();
                        String body = message.getBody();
                        String msg = String.format("%1$s", body);
                        Log.d(pseudo_tag, "!!!!!!!!!!!!!!!!! DEBUG  StringTokenizer msg =" + msg + " !!!");
                        StringTokenizer st = new StringTokenizer(msg, TetGlobalData.TOKEN_SEPARATOR);
                        String token = st.nextToken();
                        if (token.equals(TetGlobalData.RESPONCE)) {
                            String tokenres = st.nextToken();
                            if (!tokenres.equals(TetGlobalData.DS_SETUP_OK)) {
                                TetGlobalData.notReply = true;
                                Log.d(pseudo_tag, "++++!!!!!!!!!!!!!!!!! DEBUG  StringTokenizer OK OK OK OK !!!!!!!!++++");
                                EventBus.getDefault().post(new EventJabIncomMessage(msg), "INCOMING_MESSAGE");
                               // callback.onRecievedMessage(msg);
                                jConnection.disconnect();
                            } else {
                                TetGlobalData.notReply = true;
                                result = false;
                                jConnection.disconnect();
                            }
 
                        } else {
                            jConnection.disconnect();
                        }
 
                    } catch (SmackException.NotConnectedException e) {
                        Log.d(TetGlobalData.TAG_TET_A_TET, e.toString());
                    }
                }
            });
 
            Log.i(pseudo_tag, "" + pseudo_tag + " SENDING message ="+oucoming_Message+"! ");
            try {
 
                newChat.sendMessage(oucoming_Message);
            } catch (SmackException.NotConnectedException e) {
                e.printStackTrace();
            }
 
        }
        return "";
    }
 
    @Override
    protected void onPostExecute(String v) {
        EventBus.getDefault().unregister(this);
        super.onPostExecute(v);
        EventBus.getDefault().unregister(this);
     // callback.onPostExecute(true);
    }
 
 
 
}
Интерфейс такой
Java
1
2
3
4
5
6
7
public interface eJabberdSenderInteface {
    void onRecievedMessage(String msg);
 
    void onLogin(boolean aTrue);
 
    void onPostExecute(boolean b);
}
Дергаю так

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
public class toServerSenderAcyncTasker implements eJabberdSenderInteface {
 
 
    private final String pseudo_tag;
 
    public toServerSenderAcyncTasker(String REQUEST) {
 
        String action = getClass().getCanonicalName();
        int pos = action.lastIndexOf('.') + 1;
        String onlyClass = action.substring(pos);
        pseudo_tag = onlyClass;
 
        if (TetGlobalData.JBS.equals("172.14.2.101")) {
            //TetTempoDate.jabberd_OUT_COMMING_MESSAGE = REQUEST;
            new jabberdSenderAcyncTaskerLocal(REQUEST) {
                @Override
                protected boolean doAction() throws Exception {
                    Thread.currentThread().wait(1000);
                    return false;
                }
            }.execute();
        } else {
            new jabberdSenderAcyncTasker(REQUEST) {
                @Override
                protected boolean doAction() throws Exception {
                    Thread.currentThread().wait(1000);
                    return false;
                }
            }.execute();
        }
    }
 
    @Override
    public void onRecievedMessage(String msg) {
     Log.e(pseudo_tag, "onRecievedMessage = " + msg + "");
    }
 
    @Override
    public void onLogin(boolean aTrue) {
 
    }
 
    @Override
    public void onPostExecute(boolean b) {
 
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru