【问题标题】:Android SMS API安卓短信接口
【发布时间】:2009-11-18 09:23:51
【问题描述】:

我知道 SMS 内容提供程序不是公共 API 的一部分(至少没有记录),但如果我理解正确,只要您知道如何使用 API,仍然可以使用许多 SMS 功能( ?)。

例如,将 SMS 插入收件箱非常简单:

 ContentValues values = new ContentValues();
 values.put("address", "+457014921911"); 
 contentResolver.insert(Uri.parse("content://sms"), values);

很遗憾,这不会触发标准的“收件箱中的新短信”通知。是否可以手动触发?

编辑:AFAIK Android 中的“标准邮件应用程序(消息传递)”正在使用 android.permission.RECEIVE_SMS 权限监听传入的 SMS。然后,当新的 SMS 到达时,会插入带有“特殊”通知 ID 的状态栏通知。 因此,我的问题(如上所述)的一种解决方案可能是找到并发送正确的广播意图;诸如“新短信已到达”之类的意图。

编辑:从 Android 市场下载了第三方消息应用程序 (chompsms)。这个应用程序更好地满足了我的需求。当我执行 chompsms 上方的代码时,会注意到新的短信并显示“标准状态栏通知”。所以我会说标准的 Android 消息应用程序没有正确检测到短信?还是我错了?

【问题讨论】:

    标签: java android


    【解决方案1】:

    不幸的是,负责这些通知的代码隐藏在messaging application 中。 MessagingNotification 类有一个 static 方法 updateAllNotifications,您可以使用 PathClassLoader 和反射调用它:

    PathClassLoader c = new PathClassLoader("/system/app/Mms.apk", getClassLoader());
    Class.forName("com.android.mms.util.ContactInfoCache", true, c)
        .getMethod("init", Context.class).invoke(null, context);
    Class.forName("com.android.mms.transaction.MessagingNotification", true, c)
        .getMethod("updateAllNotifications", Context.class).invoke(null, context);
    

    This 显然是 very bad idea 有几个原因,但我想不出另一种方法来做你描述的事情。

    【讨论】:

      【解决方案2】:

      你能在 SMS 之后触发 PUSH 通知吗?

      线程:Does Android support near real time push notification?

      【讨论】:

        【解决方案3】:

        也许你应该替换

        content://sms
        

        content://sms/inbox
        

        【讨论】:

        • 没有区别;短信出现在收件箱中。但仍然没有很好的短信通知 :) –
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-12
        相关资源
        最近更新 更多