1. Target
In this exercise you define a broadcast receiver which listens
to telephone
state
changes. If the phone receives a phone call, then
our
receiver
will be
notified and log a message.
2. Create project
Create a new project called
de.vogella.android.receiver.phone
. Also create an activity.
TIP:Remember that your receiver is only called if the user started
it once. This requires an activity.
3. Implement receiver for the phone event
Create the
MyPhoneReceiver
class.package de.vogella.android.receiver.phone;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
public class MyPhoneReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
String state = extras.getString(TelephonyManager.EXTRA_STATE);
Log.w("MY_DEBUG_TAG", state);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
String phoneNumber = extras
.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.w("MY_DEBUG_TAG", phoneNumber);
}
}
}
}
4. Request permission
Add the
android.permission.READ_PHONE_STATE
permission to your manifest file which allows you to listen to state
changes in your receiver. Also Register your receiver in your
manifest
file. The resulting manifest should be similar to the
following listing.<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.vogella.android.receiver.phone"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="15" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" >
</uses-permission>
<application
android:icon="@drawable/icon"
android:label="@string/app_name" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="MyPhoneReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" >
</action>
</intent-filter>
</receiver>
</application>
</manifest>
5. Validate implementations
Install your application and simulate a phone call via the
Android Device Monitor. Validate that your receiver is
called and logs
a message
to
the
LogCat
view.
No comments:
Post a Comment