android 听外发短信不起作用

2023-12-31

我正在尝试收听传出的短信。我正在遵循已接受的答案here https://stackoverflow.com/questions/5808577/listen-to-outgoing-sms-or-sent-box但它不起作用。我不确定我哪里出错了。我对内容观察者一点也不熟悉,所以请原谅我的无知。

我想在服务中创建它,这样它就可以一直运行。这是我在该服务中的代码:

import android.app.Service;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;

public class SmsOutgoingObserver extends Service {
    public SmsOutgoingObserver() {
    }
    /* this method handles a single incoming request */
    @Override
    public int onStartCommand(Intent intent, int flags, int id) {

        Log.d("OUTGOING", "RUNNING SERVICE");

        return START_STICKY; // stay running
    }
    @Override
    public IBinder onBind(Intent intent) {
        return null; // disable binding
    }

    public class SmsObserver extends ContentObserver {

        public SmsObserver(Handler handler) {
            super(handler);
        }

        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);

            Uri uriSMSURI = Uri.parse("content://sms/out");
            Cursor cr = SmsOutgoingObserver.this.getContentResolver().query(uriSMSURI, null, null, null, null);

            cr.moveToNext();
            String address = cur.getString(cr.getColumnIndex("body"));

            Log.d("OUTGOING", address);

            cr.close();

            //Database.messageReceived(SmsOutgoingObserver.this, address);
        }
    }
}

我究竟做错了什么?


除了@CommonsWare 指出的我的愚蠢错误之外,我还错过了

@Override
public void onCreate() {
    super.onCreate();

    ContentResolver contentResolver = this.getContentResolver();
    contentResolver.registerContentObserver(Uri.parse("content://sms/out"),true, new SmsObserver(new Handler()));
}

另一个问题实际上是在这两行中

contentResolver.registerContentObserver(Uri.parse("content:&‌​#47;/sms/out‌​"),true, new SmsObserver(new Handler()));

and

Uri uriSMSURI = Uri.parse("content://sms/out");

我在哪里改变了content://sms/out to content://sms然后继续检查类型以确保我收到的更改实际上是传出消息。我还必须确保检查多个调用,如下所示:

if (cr.getInt(cr.getColumnIndex("type")) == 2) {
    if(id != cr.getInt(cr.getColumnIndex(cr.getColumnName(0)))) {
        id = cr.getInt(cr.getColumnIndex(cr.getColumnName(0)));

        String address = cr.getString(cr.getColumnIndex("address"));
        Database.messageSent(SmsOutgoingObserver.this, address);
            Log.d("OUTGOING", address);
        } else {
            Log.d("OUTGOING", "MESSAGE ALREADY LOGGED");
        }
     };
}

并简单定义private int id = 0;作为全局变量

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android 听外发短信不起作用 的相关文章

  • 通知声音不适用于 api 10 android

    我用这个功能来显示状态notification 一切正常 但没有声音播放notification public void notifiction main String ticker String title String text int
  • 将非 Android 项目添加到 Android 项目

    我在 Eclipse 中有三个项目 Base Server 和 AndroidClient Base和Server是Java 1 7项目 而AndroidClient显然是一个android项目 基础项目具有在服务器和 Android 客户
  • Sun 在 EDT 之外做 GUI 工作的演示?

    我正在看SplashDemo java http download oracle com javase tutorial uiswing examples misc SplashDemoProject src misc SplashDemo
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • react-native android fontFamily 不生效

    问题一 我在index android js的欢迎样式中添加了fontFamily 但没有效果 fontFamily 真的可以在 Android 上使用吗 欢迎 字体大小 20 fontFamily roboto thin 文本对齐 居中
  • 在Java中运行bat文件并等待

    您可能会认为从 Java 启动 bat 文件是一项简单的任务 但事实并非如此 我有一个 bat 文件 它对从文本文件读取的值循环执行一些 sql 命令 它或多或少是这样的 FOR F x in CD listOfThings txt do
  • 如何将 HTML 链接放入电子邮件正文中?

    我有一个可以发送邮件的应用程序 用 Java 实现 我想在邮件中放置一个 HTML 链接 但该链接显示为普通字母 而不是 HTML 链接 我怎样才能将 HTML 链接放入字符串中 我需要特殊字符吗 太感谢了 Update 大家好你们好 感谢
  • hibernate 6.0.2.Final 和 spring boot 2.7.0 的entityManagerFactory bean 未配置问题

    所以最近我想升级我的 Spring Boot 项目项目的一些依赖项 特别是这些组件 雅加达 EE 9 弹簧靴2 7 休眠 6 0 2 Final 完成此操作后 所有更新和代码折射 更新将 javax 导入到 jakarta 以及一些 hib
  • Java Swing - 如何禁用 JPanel?

    我有一些JComponents on a JPanel我想在按下 开始 按钮时禁用所有这些组件 目前 我通过以下方式显式禁用所有组件 component1 setEnabled false 但是有什么办法可以一次性禁用所有组件吗 我尝试禁用
  • 为什么\0在java中不同系统中打印不同的输出

    下面的代码在不同的系统中打印不同的输出 String s hello vsrd replace 0 System out println s 当我在我的系统中尝试时 Linux Ubuntu Netbeans 7 1 它打印 When I
  • 在android中从SD卡上传图像到facebook

    我无法从 SD 卡上传 Facebook 上的图像 我使用了下面的代码 但它没有给我错误 但同时它没有上传图像 byte data null try FileInputStream fis new FileInputStream filep
  • React Native HTTPS Api 调用在 IOS 中有效,但在 Android 中无效

    所以基本上我所做的就是简单地对启用了 HTTPS 的 UAT 服务器进行简单的 Axios 调用 我已经在 IOS 中测试了整个应用程序 API 调用工作正常 但一旦我在 Android 中测试了相同的应用程序 在真正的 Android 设
  • 将 JScrollPane 添加到 JFrame

    我有一个关于向 Java 框架添加组件的问题 我有一个带有两个按钮的 JPanel 和一个添加了 JTable 的 JScrollPane 我想将这两个添加到 JFrame 中 我可以将 JPanel 添加到 JFrame 或将 JScro
  • 手动设置Android Studio的JDK路径

    如何为 Android Studio 使用自定义 JDK 路径 我不想弄乱 PATH 因为我没有管理员权限 是否有某个配置设置文件允许我进行设置 如果您查看项目设置 您可以从那里访问 jdk 在标准 Windows 键盘映射上 您可以在项目
  • 列表过滤器内的 Java 8 lambda 列表

    示例 JSON id 1 products id 333 status Active id 222 status Inactive id 111 status Active id 2 products id 6 status Active
  • Android View Canvas onDraw 未执行

    我目前正在开发一个自定义视图 它在画布上绘制一些图块 这些图块是从多个文件加载的 并将在需要时加载 它们将由 AsyncTask 加载 如果它们已经加载 它们只会被绘制在画布上 这工作正常 如果加载了这些图片 AsyncTask 就会触发v
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • MiniDFSCluster UnsatisfiedLinkError org.apache.hadoop.io.nativeio.NativeIO$Windows.access0

    做时 new MiniDFSCluster Builder config build 我得到这个异常 java lang UnsatisfiedLinkError org apache hadoop io nativeio NativeIO
  • 由 Servlet 容器提供服务的 WebSocket

    上周我研究了 WebSockets 并对如何使用 Java Servlet API 实现服务器端进行了一些思考 我没有花费太多时间 但在使用 Tomcat 进行一些测试时遇到了以下问题 如果不修补容器或至少对 HttpServletResp
  • java'assert'和'if(){}else exit;'之间的区别

    java和java有什么区别assert and if else exit 我可以用吗if else exit代替assert 也许有点谷歌 您应该记住的主要事情是 if else 语句应该用于程序流程控制 而assert 关键字应该仅用于

随机推荐

  • Laravel 中的分页不起作用

    当我投入我的观点时 问题 gt 链接 我没有看到分页样式 并且该页面不像我在控制器中放入的那样每页需要 6 个帖子 我的职位控制器 类 QuestionsController 扩展控制器 Display a listing of the r
  • 为 LaTeX 编写功能的起点是什么?

    我对它很陌生 但知道它无法处理我需要的特殊东西 我想开发 LaTeX 的功能 问题 有一种东西叫做 TeX 然后是乳胶 然后是 KOMA Script 那么 这三个中的哪一个实际上是驱动所有这些东西的 底层引擎 这是 TeX TeX 不仅是
  • React-Native 中 Android 和 iOS 的图像大小

    在制作iOS应用程序时 我们通常会提供 x 2x 3x图像 根据我对 Android 的了解 大约有六种不同的尺寸 我已经开始研究react native并遇到了图像问题 我的问题是 我是否需要提供所有不同尺寸的图像 即通过结合 iOS 和
  • XML 到制表符分隔文本

    需要XML XSLT专家的帮助 我有 2 个以 XML 格式从系统导出的示例记录 如下所示 我喜欢使用 XSLT 将数据转换为制表符分隔的文本 如下所示https docs google com spreadsheet ccc key 0A
  • 查询@xml变量以获取行集

    我有一个 xml 数据 如下所示 DECLARE XmlContent XML SET XmlContent
  • 理解嵌套列表理解[重复]

    这个问题在这里已经有答案了 我想了解嵌套列表理解 下面 我列出了一个列表理解表达式及其 for 循环等效项 我想知道我的理解是否正确 例如 min row i for row in rows max row i for row in row
  • 使用 datetime64 将字符串转换为 np.array,而不是使用 Pandas

    我正在寻找一种方法 将以 YYYYmmdd 格式给出的日期转换为 dtype datetime64 的 np array 日期存储在另一个 np array 中 但 dtype float64 我正在寻找一种方法来避免熊猫来实现这一目标 我
  • 在erlang接收语句中引入“保存队列”的目的是什么

    我是 erlang 新手 正在学习 Joe Armstrong 的 Programming Erlang 教程 我对8 6中选择性接收中提到的 保存队列 感到困惑 如果消息根本不匹配 为什么不直接丢弃呢 放回邮箱以便后续处理的目的是什么 如
  • 为什么我的 Netbeans Xdebug 会话在一段时间不活动后会超时

    我喜欢 Netbeans 帮助我调试 Magento 应用程序的方式 在 Win 7 64 位上的 XAMPP 中 但我注意到连接在一段时间后似乎超时 断点不再被命中 我必须重新启动调试会话 这很烦人 关于如何延长或禁用调试超时有什么建议吗
  • Tensorflow 中的 RBF 网络有问题吗?

    我正在使用 Tensorflow 开发 RBF 网络 但在第 112 行出现此错误 内容如下 ValueError Cannot feed value of shape 40 13 for Tensor Placeholder 0 whic
  • 使用四元数平滑旋转

    四元数不仅可以描述旋转 还可以描述方向 即从初始 零 位置开始的旋转 我希望模拟从一个方向到另一个方向的平滑旋转 我计算了起始方向startOrientation和末端方向endOrientation并希望将中间方向描述为startOrie
  • 既然有String,为什么还要使用StringBuilder?

    我刚刚遇到StringBuilder第一次使用并感到惊讶 因为 Java 已经拥有非常强大的功能String允许追加的类 为什么要一秒钟String class 我在哪里可以了解更多信息StringBuilder String不允许追加 您
  • Javascript 中的几乎所有内容为何都是对象?

    我在许多 JavaScript 介绍中读到过很多这一点 我只是不明白 我始终认为对象是具有方法和属性的东西 我理解数组 因为它有键值对 字符串 或 数字 或 函数 怎么样 上面列出的这些东西对我来说似乎就像函数 这意味着你输入一些东西 你就
  • 内存映射文件、托管映射文件和偏移指针

    我对 Boost 库 适用于 Windows 的术语有点困惑 我想做的很简单 在磁盘上创建一个文件 gt 50 GB 的大文件 分别为写入和读取操作进行一些映射 例如 首先映射 1 GB 部分用于写入 然后将其刷新到硬盘驱动器并获取新部分
  • 选择下拉列表/选择列表中已选择的项目

    我已经寻找这个问题的答案很长一段时间了 但没有运气 或者最多有错误的解决方案 我面临的问题是我有一个选择元素 显然 在选择已选择的项目时不会触发 onchange 事件 像这样
  • 使用 PHPMAILER 阅读确认信息

    我尝试在使用 PHPMAILER 发送电子邮件时返回阅读确认 但它不起作用 我尝试了这些选项 对象的构造 mail new PHPMailer mail gt CharSet UTF 8 mail gt From email protect
  • Action_view 意图未在选择器中显示浏览器选项

    我正在创造和ACTION VIEW带有类似 URI 的意图https www example com somedirection https www example com somedirection 有一个应用程序 我们称之为示例应用程序
  • 如何清除我本地版本的TFS服务器知识?

    我们的构建人员在编译签入 TFS 实例的一些源代码时遇到问题 我正在做一些我还没有准备好签入的更改 因此我对本地文件夹进行了手动备份并删除了本地文件夹的内容 然后我做了 获取最新 特定版本 并覆盖 以确保我获得最新版本 并确保它已编译 确实
  • 如何使用 ctypes 接口从 C 返回包含 numpy 数组的对象?

    抱歉 如果这很基本 我对 ctypes python 还很陌生 我的目标是调用一个 C 库 生成一个包含 动态分配的 数组的对象 然后将该对象返回给 python 并将其保存在 python 数据结构中 例如 一个包含numpy 整数数组
  • android 听外发短信不起作用

    我正在尝试收听传出的短信 我正在遵循已接受的答案here https stackoverflow com questions 5808577 listen to outgoing sms or sent box但它不起作用 我不确定我哪里出