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

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

Войти
Регистрация
Восстановить пароль
 
Edison4
6 / 6 / 0
Регистрация: 23.02.2012
Сообщений: 169
#1

MMS Android Receiver - Программирование Android

24.10.2014, 19:07. Просмотров 435. Ответов 0
Метки нет (Все метки)

Столкнулся с проблемой - скачивание данных с ММС Центра
Я получаю заголовки и из них извлекаю url хранения ммс и адрес отправителя.
Затем пытаюсь по http скачать данные по url который достал из заголовка.
Но мне возвращается IOException Time Out.
Почему я не могу скачать ммску, стандартное приложение получает ММС.

Ниже код моего ресивера:

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
import android.content.BroadcastReceiver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import com.android.mms.transaction.HttpUtils;
import com.android.mms.util.SendingProgressTokenManager;
import com.google.android.mms.pdu_alt.*;
 
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
 
/**
* Created by Ed on 02.10.2014.
*/
 
public class MMSReceiver extends BroadcastReceiver {
 
        Context context;
        ConnectivityManager manager;
 
        public void onReceive(final Context context, Intent intent) {
                this.context = context;
                Bundle bundle = intent.getExtras();
                manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
 
                byte[] buffer = bundle.getByteArray("data");
                GenericPdu genericPdu = new PduParser(buffer).parse();
                ContentValues vl = getParams(genericPdu);
                final String contentLocation = vl.getAsString("ct_l");
 
                new Thread(new Runnable() {
                        @Override
                        public void run() {
                                try {
                                        ensureRouteToHost(context, contentLocation,  "10.10.10.10");
                                        byte[] rawPdu = HttpUtils.httpConnection(context, SendingProgressTokenManager.NO_TOKEN, contentLocation, null, HttpUtils.HTTP_GET_METHOD, true, "10.10.10.10", 8080); // ЗДЕСЬ <====================
 
                                        Log.i("mLogs", "DATA :" + rawPdu.length);
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                }).start();
 
        }
 
        public static void ensureRouteToHost(Context context, String url, String proxy) throws IOException {
                ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                connMgr.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE_HIPRI, "enableMMS");
 
                int inetAddr;
                if (proxy != null && !proxy.equals("")) {
                        String proxyAddr = proxy;
                        inetAddr = lookupHost(proxyAddr);
                        if (inetAddr == -1) {
                                Log.i("mLogs", "Cannot establish route for " + url + ": Unknown host");
                        } else {
                                if (!connMgr.requestRouteToHost(ConnectivityManager.TYPE_MOBILE_MMS, inetAddr)) {
                                        Log.i("mLogs","Cannot establish route to proxy " + inetAddr);
                                }
                        }
                } else {
                        Uri uri = Uri.parse(url);
                        inetAddr = lookupHost(uri.getHost());
                        if (inetAddr == -1) {
                                throw new IOException("Cannot establish route for " + url + ": Unknown host");
                        } else {
                                if (!connMgr.requestRouteToHost( ConnectivityManager.TYPE_MOBILE_MMS, inetAddr)) {
                                        throw new IOException("Cannot establish route to " + inetAddr + " for " + url);
                                }
                        }
                }
        }
 
        private static int lookupHost(String hostname) {
                InetAddress inetAddress;
                try {
                        inetAddress = InetAddress.getByName(hostname);
                } catch (UnknownHostException e) {
                        return -1;
                }
                byte[] addrBytes;
                int addr;
                addrBytes = inetAddress.getAddress();
                addr = ((addrBytes[3] & 0xff) << 24) | ((addrBytes[2] & 0xff) << 16) | ((addrBytes[1] & 0xff) << 8) | (addrBytes[0] & 0xff);
                return addr;
        }
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2014, 19:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос MMS Android Receiver (Программирование Android):

Receiver - Программирование Android
Добрый день уважаемые форумчане! Помогите разобраться, на сколько я понял receiver нужен для прослушки широковещателных сообщений, т.е к...

AlarmManager и Service or Receiver? - Программирование Android
Целый день искал, но нифига не нашел( то что нашел помогло тоолько частично). Суть вот в чем, у меня есть AlarmManeger как уже всем и так...

Подружить receiver и service - Программирование Android
вообщем такая ситуация. У меня есть сервис который каждые 10 минут отправляет данные на сервер. Мне нужно сделать так чтоб этот сервис...

Receiver не принимает сообщения - Программирование Android
Привет. Почему-то receiver не принимает системные броадкасты, можешь какая-то ошибка в моей писанине, а ее &quot;замыленым&quot; взглядом не вижу. ...

WhatsApp call receiver - Программирование Android
После появления звонков можно ли как определить начало и конец звонка как в gsm?

Можно ли отправить MMS с видеофайлом через приложение ? - Программирование Android
Добрый день. Подскажите как сделать отправку MMS через приложение с вложенным видеофайлом, чтобы один юзер мог отослать на номер телефона...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2014, 19:07
Привет! Вот еще темы с ответами:

Как вызвать Notification в Broadcast Receiver? - Программирование Android
нужно чтобы по событию в классе Broadcast Receiver, а точнее в методе onReceive() запустить метод уведомления например такое...

Динамический Receiver в Service перестаёт принимать сообщения - Программирование Android
В классе, который наследуется от Service определен BroadcastReceiver. Когда ловим сообщение о изменении состояния подключения к сети, то...

Куда логируются сетевые события: звонки, SMS, MMS, GPRS? - Программирование Android
Добрый день! Пожалуйста, подскажите куда логируются сетевые события в андройде, т.е. журнал вызовов, интернет трафик, смс, ммс. Меня...

Откуда берутся атрибуты android:layout_width и android:layout_height в элементе LinearLayout? - Программирование Android
Недавно начал изучать Android API, а сегодня более менее разобрал основы синтакиса XML. Затем стал разбирать следующий пример: ...


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

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

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