java - 如何从 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 时才有效。
解决方案
推荐阅读
- javascript - 如何使用 google-appscripts 在我的电子邮件中将 google 幻灯片作为附件发送?
- python-3.x - Pandas:导入多个 CSV 文件并追加在一起,使元素按照时间索引排列
- sql - 可以从 PL/SQL Oracle 中的正在进行的游标中删除字段吗?
- constructor - 在 F# 类中,如何在初始化时使用另一个值中的值?
- algorithm - 哪种排序方法最适合对大小为 0 到 2^40 的 100 万个整数进行排序,以便获得最小的波浪号时间复杂度?
- c# - 如何在 c# 中禁用 HeaderText Click?
- r - 假设我不知道数据框中的列名,如何根据该列中的值对 df 进行排序?
- python - PyTorch,按元素应用不同的功能
- python - 如何为文件中的每个单词添加数字组合?
- java - 如何搜索该列表
包含使用流的字符串的给定数组 [] 的所有值?