2014-11-24 21 views
8

bir gelen aramayı tespit: android işletim sistemi, bir gelen aramayı (sayı) nasıl saptadığımızbir Android "işletim" does nasıl bilmek istiyorum

  1. ve kişi adı görüntüler ve bize katılmak için seçeneği sunar arama.
  2. "END CALL BUTTON" öğesine dokunulduğunda işletim sisteminde ne olur?

Bu konuda arandığımda, yalnızca kendi uygulamalarımı oluşturmak için Sınıfları ve yöntemleri alıyorum. Açıklama için ricada bulunmak.

cevap

16

Android'de, yerleşik TelephonyManager API'sini kullanarak arama olaylarını algılamak mümkündür. TelephonyManager sınıfı, cihazdaki telefon hizmetleriyle ilgili bilgilere erişim sağlar.

Örnek:

MyCallReceiver

denilen yeni bir sınıf oluşturma ait
package com.example; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.telephony.TelephonyManager; 
import android.widget.Toast; 

public class MyCallReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
      // This code will execute when the phone has an incoming call 

      // get the phone number 
      String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 
      Toast.makeText(context, "Call from:" +incomingNumber, Toast.LENGTH_LONG).show(); 

     } else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
       TelephonyManager.EXTRA_STATE_IDLE) 
       || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
         TelephonyManager.EXTRA_STATE_OFFHOOK)) { 
      // This code will execute when the call is disconnected 
      Toast.makeText(context, "Detected call hangup event", Toast.LENGTH_LONG).show(); 

     } 
    } 
} 
telefon durumunu izlemek ve olacak

BroadcastReceiver sınıfı telefon eyaletinde bir değişiklik olduğunda, OnReceive() yöntemi BroadcastReceiver çağrılacak.

referanslar için AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="18" /> 

    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver android:name="com.example.MyCallReceiver" > 
      <intent-filter> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
     </receiver> 
    </application> 

</manifest> 

Kontrolü Bu READ_PHONE_STATE izni ekleyin: BroadcastReceiver

+0

Teşekkür bu kodu. BroadCast ve PhoneStateListener [onCallStateChanged()] kullanımı arasındaki fark nedir. Güveninizi Bekliyor – Pravin

+0

Sadece Broadcast'in tüm koşullar ile çalışacağını söyleyebiliriz.Ticaretçiler sadece telefonla ilgili şeyler ile çalışır. ;-) –

+0

OnPause çağrılacak mı? –