首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在android中读取新传入消息的消息内容?

如何在android中读取新传入消息的消息内容?
EN

Stack Overflow用户
提问于 2011-02-16 01:45:44
回答 5查看 44.3K关注 0票数 23

我想通过编程的方式在安卓系统中读取新传入的消息正文。

我尝试了一些东西,但没有返回任何内容:

代码语言:javascript
复制
Uri uri = Uri.parse("content://sms/inbox");
        ContextWrapper context = null;      
        Cursor c = context.getContentResolver().query(uri, null, null ,null,null);      
        String body = null; 
        String number=null;
        if(c.moveToFirst()) {        
           body = c.getString(c.getColumnIndexOrThrow("body")).toString();
           number = c.getString(c.getColumnIndexOrThrow("address")).toString();
        }
        c.close(); 
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-02-16 02:20:31

我已经在我的班级网站上发布了一些关于这方面的示例程序。下面是示例Read SMS Example,下面是一段代码。基本上,您可以注册一个广播接收器来监听SMS_Receive并查看以下内容。

代码语言:javascript
复制
Intent intent = getIntent();
    Bundle bundle = intent.getBundleExtra("mySMS");

    if (bundle != null) {
        Object[] pdus = (Object[])bundle.get("pdus");
        SmsMessage sms = SmsMessage.createFromPdu((byte[])pdus[0]);
        Log.i("mobile.cs.fsu.edu", "smsActivity : SMS is <" +  sms.getMessageBody() +">");

        //strip flag
        String message = sms.getMessageBody();
        while (message.contains("FLAG"))
            message = message.replace("FLAG", "");

        TextView tx = (TextView) findViewById(R.id.TextBox);
        tx.setText(message);            
    } else
        Log.i("mobile.cs.fsu.edu", "smsActivity : NULL SMS bundle");
票数 23
EN

Stack Overflow用户

发布于 2011-06-17 14:13:27

下面是读取传入消息并在列表视图中显示的代码,别忘了在清单文件中添加权限:

代码语言:javascript
复制
<uses-permission android:name="android.permission.READ_SMS"/>

代码如下:

代码语言:javascript
复制
 listitem=(ListView)findViewById(R.id.ListView);

        Uri mSmsQueryUri = Uri.parse("content://sms/inbox");
        List<String> messages = new ArrayList<String>();

        Cursor cursor = null;
        try {
            cursor = getContentResolver().query(mSmsQueryUri, null, null, null, null);
            if (cursor == null) {
                Log.i(TAG, "cursor is null. uri: " + mSmsQueryUri);

            }
            for (boolean hasData = cursor.moveToFirst(); hasData; hasData = cursor.moveToNext()) {
                final String body = cursor.getString(cursor.getColumnIndexOrThrow("body"));
                messages.add(body);
            }
        } catch (Exception e) {
            Log.e(TAG, e.getMessage());
        } finally {
            cursor.close();
        }

        listitem.setAdapter(new ArrayAdapter<String>(ReadMessage.this, android.R.layout.simple_list_item_1,messages));
票数 6
EN

Stack Overflow用户

发布于 2017-05-04 16:18:56

一个非常简单的解决方案是使用这个SMS解析器库:

https://github.com/adorsys/sms-parser-android

代码语言:javascript
复制
compile 'de.adorsys.android:smsparser:0.0.3'

使用它,您可以阅读整个消息,也可以阅读传入消息的特定部分。您还可以设置接收消息的电话号码。

如果你需要更多关于它的工作原理或使用方法的信息,请查看我上面列出的github存储库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5007332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档