Ich versuche, den MMS
Bildinhalt über die MMS-URL herunterladen, aber es kommt mit einer 403 (Verboten) Serverantwort mit einer ungültigen MSISDN
Nummer zurück. Ich habe meinen Code unten als Referenz eingefügt. Danke im Voraus!android mms herunterladen mms Inhalt durch mms url
private static boolean downloadThroughGateway(Context context, String host,
String port, String urlMms) throws Exception {
URL url = new URL(urlMms);
// Set-up proxy
if (host != null && port != null && host.equals("") && !port.equals("")) {
Log.d(TAG, "[MMS Receiver] Setting up proxy (" + host + ":" + port
+ ")");
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost", host);
systemProperties.setProperty("http.proxyPort", port);
systemProperties.setProperty("http.keepAlive", "false");
}
// Open connection
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// Disable cache
connection.setUseCaches(false);
// Set the timeouts
connection.setConnectTimeout(TIMEOUT);
connection.setReadTimeout(TIMEOUT);
// Connect to the MMSC
Log.d(TAG, "[MMS Receiver] Connecting to MMS Url " + urlMms);
connection.connect();
try {
Log.d(TAG,
"[MMS Receiver] Response code is "
+ connection.getResponseCode());
if (connection.getContentLength() >= 0) {
Log.d(TAG, "[MMS Receiver] Download MMS data (Size: "
+ connection.getContentLength() + ")");
byte[] responseArray = new byte[connection.getContentLength()];
DataInputStream i = new DataInputStream(
connection.getInputStream());
int b = 0;
int index = 0;
while ((b = i.read()) != -1) {
responseArray[index] = (byte) b;
index++;
}
i.close();
// Parse the response
MmsDecoder parser = new MmsDecoder(responseArray);
parser.parse();
byte[][] imageBytes = new byte[parser.getParts().size()][];
for (int j = 0; j < parser.getParts().size(); j++) {
imageBytes[j] = parser.getParts().get(j).getContent();
}
// Insert into db
// Uri msgUri = MmsHelper.insert(context, parser.getFrom(),
// parser.getSubject(), imageBytes);
// ContentValues updateValues = new ContentValues();
// updateValues.put("read", 0);
// context.getContentResolver().update(msgUri, updateValues,
// null,
// null);
// Close the connection
Log.d(TAG, "[MMS Receiver] Disconnecting ...");
connection.disconnect();
System.gc();
// Callback
// if (bi != null)
// bi.onReceiveMms(context, msgUri);
return true;
}
// Close the connection
Log.d(TAG, "[MMS Receiver] Disconnecting ...");
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
Was ist mit Benutzer Zugangsdaten? Haben Sie überprüft, ob die richtigen Anmeldeinformationen für den Datenservicezugriff festgelegt sind? Haben Sie versucht (Network Protocol Analyzer) Tools wie WireShark usw. zu verwenden, um die MMS-Sendeanforderung (HTTP PDU) und die entsprechende Antwort vom Remote-MMSC zu entschlüsseln. Ohne Angabe von Details bezüglich der Verbindung, wie z. B. der Remote-MMSC-URL, sind Anmeldedaten schwer reproduzierbar und bieten eine Lösung für das Problem. – Sriram
Wie die Anmeldeinformationen übergeben und ich hatte auch keine Informationen über die Anmeldeinformationen, die zur Verfügung gestellt werden müssen? –
Bitte überprüfen Sie zunächst, ob Sie google.com erfolgreich in Ihrem Browser aufrufen und starten können. Dann können Sie zu den MMS-spezifischen Einstellungen navigieren, indem Sie zu (On android 2.0) Einstellungen-> Mobile Netzwerke -> Zugangspunktnamen -> Name Ihres Network Providors navigieren. Hier finden Sie Tabs wie 1.) MMSC 2.) MMS-Proxy 3.) MMS-Port 4.) Benutzername 5.) Passwort. – Sriram