Requirements. . . . . . . . . . . . . . . . . .<-! Main posts under Banner (D4) -><-! Posts under the main text (D5) ->
Reply:
Android Caller ID Get Code
Manifest in to add this permission
Reply:
Because there is no direct hang up the phone android API, so you need to import two AIDL package:
android.telephony and com.android.internal.telephony
The following code number is the number of incoming
TelephonyManager telephone = (TelephonyManager) getSystemService (TELEPHONY_SERVICE);
PhoneStateListener listener = new PhoneStateListener () {
@ Override
public void onCallStateChanged (int state, String number) {
if ("Close". equals (check)) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_RINGING:
break;
}
} Else {
if ("mute". equals (phone)) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_RINGING:
break;
}
} Else if ("Harmony mode". Equals (phone)) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_RINGING:
try {
Method method = Class.forName (
"Android.os.ServiceManager"). GetMethod (
"GetService", String.class);
IBinder binder = (IBinder) method.invoke (null,
new Object [] {TELEPHONY_SERVICE});
ITelephony telephony = ITelephony.Stub
. AsInterface (binder);
telephony.endCall ();
} Catch (Exception e) {
e.printStackTrace ();
}
break;
}
} Else {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
case TelephonyManager.CALL_STATE_RINGING:
try {
Method method = Class.forName (
"Android.os.ServiceManager"). GetMethod (
"GetService", String.class);
IBinder binder = (IBinder) method.invoke (null,
new Object [] {TELEPHONY_SERVICE});
ITelephony telephony = ITelephony.Stub
. AsInterface (binder);
telephony.endCall ();
} Catch (Exception e) {
e.printStackTrace ();
}
listNum = (List
. FindAllNumber (PersonNumber.TABLENAME);
for (int i = 0; i
String time = sdf.format (new Date ());
blackNumber = new PhoneBlackNumber (listNum
.. Get (i) getNumber (), "unknown", time);
dbHelper.insertPersonNumber (blackNumber);
Intent intt = new Intent ();
intt.setAction (PhoneReceiver.PHONE_RECEIVER_ACTION);
sendBroadcast (intt);
}
}
break;
}
}
}
super.onCallStateChanged (state, number);
}
};
telephone.listen (listener, PhoneStateListener.LISTEN_CALL_STATE);
Reply:
The landlord needs are simple, requiring only get caller ID, no other operations ......
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.app.Service;
import android.telephony.TelephonyManager;
import java.lang.reflect.Method;
import android.widget.Toast;
public class PhoneListen extends BroadcastReceiver {
private static boolean mIncomingFlag = false;
private static String mIncomingNumber = null;
@ Override
public void onReceive (Context context, Intent intent) {
/ / Dial number;
if (intent.getAction (). equals (Intent.ACTION_NEW_OUTGOING_CALL)) {
;/ / This is used when dialing into, so here is useless
} Else {
/ / Get call;
TelephonyManager tManager = (TelephonyManager) context
. GetSystemService (Service.TELEPHONY_SERVICE);
switch (tManager.getCallState ()) {
/ / Call comes
case TelephonyManager.CALL_STATE_RINGING:
/ / MIncomingNumber is Caller ID
mIncomingNumber = intent.getStringExtra ("incoming_number");
Toast.makeText (context, mIncomingNumber,
. Toast.LENGTH_LONG) show ();
break;
default: break;
}
}
}
}
No comments:
Post a Comment