在Android应用程序中接收MMS

我要开发一个Android应用程序,它的一个活动是:

  1. 检测新的MMS消息
  2. 获取发件人编号以检查我是否希望在我的申请中从中收到该编号
  3. 从MMS获取(txt +图像)
  4. 在ListView中显示(Txt + Image)数据

好吧,我发现了一个代码,可以帮助我完成第二和第三个任务,但我尝试了它并在我的手机上测试它,它是工作但它没有检索任何只是黑色的界面!

也许我不理解这段代码的问题,

我在每个声明上面写了我的评论,我无法理解它,请回答我在评论中的评论,并帮助我理解我所缺少的内容,希望尽早得到你的回复。 请清楚。

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.text.MessageFormat; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.telephony.SmsMessage; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.app.Activity; import android.os.Bundle; public class MMSReceiverActivity extends Activity { private final Uri CONTENT_URI_PART = Uri.parse("content://mms/part"); private static final String MSG_ID_STR = "mid=%1$s"; // I don't understand it @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Start Copying Code // I don't know how can I retrieve mms id long msg_id = this.getIntent().getLongExtra("msg_id", 0); // What's different between ViewGroup and ListView ViewGroup listview = (ViewGroup) findViewById(R.id.mmsdetaillist); // What's different between "content://mms/part" and "content://mms/" Cursor cursor = getContentResolver().query(CONTENT_URI_PART, null, String.format(MSG_ID_STR, msg_id), null, null); if (cursor.moveToFirst()) { do { // Why he puts partID String partId = cursor.getString(cursor.getColumnIndex("_id")); String type = cursor.getString(cursor.getColumnIndex("ct")); if ("text/plain".equals(type)) { String data = cursor.getString(cursor .getColumnIndex("_data")); String body; // What's the different between if it's null or not all of // them will return (text) if (data != null) { // implementation of this method below body = getMmsText(partId); } else { body = cursor.getString(cursor.getColumnIndex("text")); } // Why he declared it like this i mean why it didn't declare // like this findViewById (R.) etc TextView t = new TextView(this); t.setText(body); listview.addView(t); // Why here else ?? it should be only if because if MMS // contains Text + img : so it'll ignore the (else = img) // part ! } else if ("image/jpeg".equals(type) || "image/bmp".equals(type) || "image/gif".equals(type) || "image/jpg".equals(type) || "image/png".equals(type)) { Bitmap bitmap = getMmsImage(partId); ImageView iv = new ImageView(this); iv.setImageBitmap(bitmap); listview.addView(iv); } } while (cursor.moveToNext()); } cursor.close(); } public String getMmsText(String id) { Uri partURI = Uri.parse("content://mms/part/" + id); InputStream is = null; StringBuilder sb = new StringBuilder(); try { is = getContentResolver().openInputStream(partURI); if (is != null) { InputStreamReader isr = new InputStreamReader(is, "UTF-8"); BufferedReader reader = new BufferedReader(isr); String temp = reader.readLine(); while (temp != null) { sb.append(temp); temp = reader.readLine(); } } } catch (IOException e) { } finally { if (is != null) { try { is.close(); } catch (IOException e) { } } } return sb.toString(); } public Bitmap getMmsImage(String _id) { Uri partURI = Uri.parse("content://mms/part/" + _id); InputStream is = null; Bitmap bitmap = null; try { is = getContentResolver().openInputStream(partURI); bitmap = BitmapFactory.decodeStream(is); } catch (IOException e) { } finally { if (is != null) { try { is.close(); } catch (IOException e) { } } } return bitmap; } } 

注意:每次我搜索发送或接收彩信我都有这个链接,但直到现在我还没有得到它

我应该使用repo和Git吗? 什么是回购和Git? 我为什么要在彩信中使用?

我应该在发送和接收彩信时使用它吗? 如果是的话为什么? 我可以使用此代码吗?

  content://mms-sms/conversations 

而不是回购和git?

回购和Git

您的大部分问题与作业的MMS部分无关。 其中大部分是标准的java和/或Android,您需要在执行此类任务之前了解它。

除此之外,短信和彩信不是直接支持的,而且大部分都是无人值守的,因此很难使用。

我一直在玩sms和mms,发现这些链接非常有用:

如何在Android中读取彩信数据?

http://groups.google.com/group/android-developers/browse_thread/thread/d0c15ec17c12af0e?fwc=1&pli=1

而现在,我就是这样,我不妨回答一些你提出的更简单的问题:

“ViewGroup和ListView”

ViewGroup是大多数视图的超类,可以包含其他视图(LinearLayout,RelativeLayout …),其中ListView是“创建可滚动项列表的ViewGorup”。

“为什么他这样声明我的意思是为什么它没有声明像这个findViewById(R。)等”

如果您有xml布局文件,并且想要引用该布局中的View,则使用findViewById。 在这种情况下,他在运行时创建一个TextView(而不是在xml文件中定义它)并将其添加到ListView。