首页 > 解决方案 > 如何从 BroadcastReceiver 中的内容解析器读取

问题描述

我是 android 开发新手,我正在开发一个使用“ContentResolver()”读取短信的应用程序。

除非我尝试打印内容解析器查询的结果,否则该应用程序运行完美。

我的服务.java

public class MyService extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String[] reqCols = new String[] { "_id", "address", "body" };
        
        Cursor c = context.getContentResolver().query(Uri.parse("content://sms/inbox"), reqCols, null, null, null);
        Toast.makeText(context, "Result: "+c.getString(0)+c.getString(1), Toast.LENGTH_LONG).show();
        //Toast.makeText(context, "SMS Read:", Toast.LENGTH_LONG).show();
        }
    }

该应用程序在 5 秒后使用 AlarmManager 启动。

如果我尝试用

Toast.makeText(context, "SMS Read:", Toast.LENGTH_LONG).show();

它运行良好。

但是如果我尝试显示 c.getString(0),它就会崩溃。

Toast.makeText(context, ""+c.getString(0)+c.getString(1), Toast.LENGTH_LONG).show();

NB。我感觉错误是因为我正在扩展广播接收器,而 contentResolver 仅在扩展 Activity 时才有效。

标签: javaandroidbroadcastreceiverandroid-contentresolver

解决方案


推荐阅读