Android监听手机电话状态与发送邮件通知来电号码的方法(基于PhoneStateListene实现)

本文实例讲述了Android监听手机电话状态与发送邮件通知来电号码的方法。分享给大家供大家参考,具体如下:

在android中可以用PhoneStateListener来聆听手机电话状态(比如待机、通话中、响铃等)。本例是通过它来监听手机电话状态,当手机来电时,通过邮件将来电号码发送到用户邮箱的例子。具体程序如下:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.widget.TextView;
public class A07Activity extends Activity {
 private TextView tv;//用来显示电话状态
 private String emailReceiver="16*****85@qq.com"; //邮箱地址
 private String emailSubject="你有来电信息,请查收!"; //作为邮件主题
  /** Called when the activity is first created. */
  @SuppressWarnings("static-access")
 @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tv=(TextView)findViewById(R.id.tv);
    PhoneCallListener pcl=new PhoneCallListener();
    TelephonyManager tm=(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
    tm.listen(pcl, pcl.LISTEN_CALL_STATE);
  }
  public class PhoneCallListener extends PhoneStateListener{
   public void onCallStateChanged(int state,String incomingNumber){ //需要重写onCallStateChanged方法
   switch(state){
   case TelephonyManager.CALL_STATE_IDLE:
    tv.setText("CALL_STATE_IDLE");
    break;
   case TelephonyManager.CALL_STATE_OFFHOOK:
    tv.setText("CALL_STATE_OFFHOOK");
    break;
   case TelephonyManager.CALL_STATE_RINGING:
    tv.setText("来电号码"+incomingNumber); //如果有人打来电话,就会自动发送邮件到邮箱通知用户来电号码
//设置来电时发送邮件
    Intent i=new Intent(android.content.Intent.ACTION_SEND);
    i.setType("plain/text");
    i.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{emailReceiver.toString()});
    i.putExtra(android.content.Intent.EXTRA_SUBJECT, emailSubject.toString());
    i.putExtra(android.content.Intent.EXTRA_TEXT, "来电电话"+incomingNumber);
    startActivity(Intent.createChooser(i, "来电信息"));
    break;
    default:
    break;
   }
   super.onCallStateChanged(state, incomingNumber);
   }
  }
}

其中还需要在AndroidManifest.xml中添加几个相应的权限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.my.a07"
  android:versionCode="1"
  android:versionName="1.0" >
  <uses-sdk android:minSdkVersion="10" />
  <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
      android:name=".A07Activity"
      android:label="@string/app_name" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
  </application>
  <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
  <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
  <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
</manifest>

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android控件用法总结》及《Android开发入门与进阶教程》

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • Android监听来电和去电的实现方法

    本文实例讲述了Android监听来电和去电的实现方法.分享给大家供大家参考,具体如下: 要监听android打电话和接电话,只需下面2步骤 第一步,写一个Receiver继承自BroadcastReceiver import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import andr

  • android实现来电静音示例(监听来电)

    复制代码 代码如下: private static int previousMuteMode = -1; /** * 来电静音 *  * @param context */private void toggleRingerMute(Context context){    AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);    if (previousMuteMode == -1) 

  • Android监听系统来电并弹出提示窗口

    1.问题 项目中有自己企业的通讯录,但是在应用中拨打公司通讯录的联系人,由于手机通讯录中没有相应的信息,只显示一串电话号 2 .目的 监听系统来电,获取到电话号码,通过调用接口,查询出来相应电话号码的详细信息,并弹出系统悬浮框,给用户提示. 3.实现 首先 注册广播监听系统来电.监听系统来电需要.注册相应的权限 代码地址:https://github.com/sdsjk/phone_alert.git <uses-permission android:name="android.permi

  • Android中监听未接来电的2种方法

    这里主要是总结一下如何监听有未接来电的问题   1.1 使用广播接收器 BrocastReceiver 实现思路 : 静态注册监听android.intent.action.PHONE_STATE 的广播接收器 当手机的状态改变后将会触发 onReceive. 手机的状态分为CALL_STATE_RINGING(响铃中),CALL_STATE_IDLE(空闲),CALL_STATE_OFFHOOK(忙音). 也就是说当你没有任何电话是,状态是 IDLE ,当接到电话时是 OFFHOOK ,电话结

  • Android来电监听和去电监听实现代码

    我觉得写文章就得写得有用一些的,必须要有自己的思想,关于来电去电监听将按照下面三个问题展开 1.监听来电去电有什么用? 2.怎么监听,来电去电监听方式一样吗? 3.实战,有什么需要特别注意地方? 监听来电去电能干什么 1.能够对监听到的电话做个标识,告诉用户这个电话是诈骗.推销.广告什么的 2.能够针对那些特殊的电话进行自动挂断,避免打扰到用户 来电去电的监听方式(不一样的方式) 1.来电监听(PhoneStateListener) 来电监听是使用PhoneStateListener类,使用方式

  • android 电话状态监听(来电和去电)实现代码

    实现手机电话状态的监听,主要依靠两个类:TelephoneManger和PhoneStateListener. TelephonseManger提供了取得手机基本服务的信息的一种方式.因此应用程序可以使用TelephonyManager来探测手机基本服务的情况.应用程序可以注册listener来监听电话状态的改变.我们不能对TelephonyManager进行实例化,只能通过获取服务的形式: Context.getSystemService(Context.TELEPHONY_SERVICE);

  • Android监听手机电话状态与发送邮件通知来电号码的方法(基于PhoneStateListene实现)

    本文实例讲述了Android监听手机电话状态与发送邮件通知来电号码的方法.分享给大家供大家参考,具体如下: 在android中可以用PhoneStateListener来聆听手机电话状态(比如待机.通话中.响铃等).本例是通过它来监听手机电话状态,当手机来电时,通过邮件将来电号码发送到用户邮箱的例子.具体程序如下: import android.app.Activity; import android.content.Intent; import android.os.Bundle; impor

  • Android 监听手机GPS打开状态实现代码

    Android 监听手机GPS打开状态实现代码 GPS_Presenter package com.yiba.core; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.location.LocationManager; /** *

  • android获取及监听手机网络状态

    目录 一.获取当前手机联网方式是WiFi还是手机4G数据 二.监听手机网络变化 总结 一.获取当前手机联网方式是WiFi还是手机4G数据 private boolean getNetworkType(){ ConnectivityManager mConnectivity = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); //检查网络链接 NetworkInfo info = mConnectivity.

  • Android 监听软键盘状态的实例详解

    Android 监听软键盘状态的实例详解 近日遇到要检测软键盘是否显示或隐藏的问题,搜了一下网上,最后找到一个很简单的,记录一下. activityRoot是activity的根view,就是xml里面的第一个view,给它设置一个id. final View activityRootView = findViewById(R.id.activityRoot); activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(ne

  • Android监听手机短信的示例代码

    本文介绍了Android监听手机短信的示例代码,分享给大家,具体如下: 以下情况可能会导致短信拦截失败: 小米,360等品牌手机拦截短信,短信的优先级给了系统 用户禁用短信权限 手机连接电脑,被电脑端的手机助手类软件截获 手机内装有QQ通讯录之类的管理联系人,短信的应用,被截获. 前提--权限: <uses-permission android:name="android.permission.RECEIVE_SMS" > </uses-permission>

  • Android监听软键盘弹出与隐藏的两种方法

    需求: 现在有一个需求是点击一行文本框,弹出一个之前隐藏的输入框,输入完成后按返回键或者其他的东西隐藏键盘和输入框,将输入框的内容填充到文本框中. 实现: 拿到这个需求的第一反应就是写一个监听来监听键盘的显示和隐藏来控制输入框的显示和隐藏,控制文本框中的内容. 所以我做了如下操作: 指定android:windowSoftInputMode="adjustResize|stateAlwaysHidden"这个的做法是为了让键盘弹出时改变布局. 让Activity实现Layoutchan

  • Android 监听网络状态方法详解

    Android 监听网络状态方法详解 一.加入网络权限 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission Android:name="android.permission.ACCESS_NETWORK_STATE" /> 二.判断手机网络的几个方案 1)判断是否有网络连接 public boolean isMobileConnected(Context context) { if (context != nul

  • Android监听电池状态实例代码

    如果要监听电池的状态改变,需要动态注册:android.intent.action.BATTERY_CHANGED,收到Action后可以根据对应的Key获取你需要的信息,更详细信息可以参考以下例子中的BatteryChangedReceiver类 具体代码如下所示: package com.example.charginganimation; import android.app.Activity; import android.content.BroadcastReceiver; impor

  • android 监听网络状态的变化及实战的示例代码

    平时我们在请求错误的情况下,通常会进行处理一下,一般来说,主要分为两方面的错误 没有网络的错误 在有网络的情况下,我们客户端的错误或者服务器端的错误 今天这篇博客主要阐述以下问题 怎样监听网络状态的变化,包括是否打开WiFi,否打开数据网络,当前连接的网络是否可用 网络没有打开情况下的处理,如弹出对话框,跳转到 打开 WiFi设置的界面等 非WiFi情况下是否加载图片,是否播放视频等 实现思路 在网络错误的情况下获取网络状态进行判断,这种方法是可行的,但你想过了没有,如果每次都要进行这样的判断,

  • iOS监听手机锁屏状态

    iPhone的锁屏监测分为两种方式监听: 1. 程序在前台,这种比较简单.直接使用Darwin层的通知就可以了: #import <notify.h> #define NotificationLock CFSTR("com.apple.springboard.lockcomplete") #define NotificationChange CFSTR("com.apple.springboard.lockstate") #define Notifica

随机推荐