java - 捕获来电并点击 Web 服务并在 Android 的 "call receive reject panel"上显示响应?

标签 java android mobile android-widget telephony

我想创建一个将执行以下操作的 android 应用程序

  1. 捕获/监听来电事件(我知道这一步在 SO 上可能有重复,但为了完整起见,我问)

  2. 接管控制权并点击网络服务 (HTTP POST) 以从互联网获取一些信息

  3. 并在“调用接收/拒绝按钮”顶部显示与“警报小部件”相同的内容,通常是我们获得联系人“面孔”的地方。

基本问题是,在普通 android 上开发这样的应用程序是否可行?如果是,怎么办? 如果有的话,后果是什么?

该解决方案也应该适用于最新的 Android 版本(从 2.3 开始,2.3 有一个有争议的补丁,它破坏了依赖于 android 的私有(private)电话 api 的应用程序)

http://developer.android.com/reference/android/content/BroadcastReceiver.html指出,

In particular, you may not show a dialog or bind to a service from within a BroadcastReceiver. For the former, you should instead use the NotificationManager API. For the latter, you can use Context.startService() to send a command to the service.

最佳答案

对于 1) 部分,您可以创建一个 BroadcastReceiver并聆听

TelephonyManager#ACTION_PHONE_STATE_CHANGED action.

这将处理您的调用事件。

对于 2) 部分需要写一个 AsyncTask执行 HttpPost对您的网络服务采取行动。网上有许多关于如何执行 HttpPost 操作的教程。

现在,每当你实现一个 AsyncTask 时,你都有一个 onPostExecute方法。在该方法中,您可以使用警报对话框执行显示的第三部分。

希望对你有帮助

一切顺利

干杯

关于java - 捕获来电并点击 Web 服务并在 Android 的 "call receive reject panel"上显示响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8486778/

相关文章:

java - Android studio setContentView(R.layout.activity_login);即使我的第二个 Activity 名称 Activity_login 出现在布局文件夹中也无法正常工作

java - 如何以编程方式从设置中获取启用的自定义键盘名称

android - 在 Xamarin 中使用本地数据库

Android Camera 2 预览尺寸和设备宽高比

ios - Facebook iOS 应用程序如何在其 WebView 用户代理中知道移动运营商

java - 如何在 Clojure 中实现全包随机数函数?

java - 三个 float 的概率

java - 由于重力作用,图像不在底部(底部)

java - SQlite WHERE 语句不起作用?

android - 无法打开.mp3录音java.io.FileNotFoundException