Androidは着信した携帯番号を取得します
最近の開発プロジェクトでは、現在の携帯電話の状態(空き、着信、オン)を傍受し、着信時に着信した携帯電話番号を取得する必要がある.
携帯電話の状態を傍受するためにバックグラウンドでサービスが稼働していると書かれています.コードは以下の通りです.
携帯電話のステータスを監視するサービス:
携帯電話の状態を傍受するPhoneListener:
MainActivity:
manifestプロファイル:
最後に、携帯電話の状態を読み取る権限を追加することを忘れないでください.
携帯電話の状態を傍受するためにバックグラウンドでサービスが稼働していると書かれています.コードは以下の通りです.
携帯電話のステータスを監視するサービス:
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
public class PhoneService extends Service {
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
manager.listen(new PhoneListener() , PhoneStateListener.LISTEN_CALL_STATE);
}
}
携帯電話の状態を傍受するPhoneListener:
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
public class PhoneListener extends PhoneStateListener {
/**
* state
* incomingNumber
*/
@Override
public void onCallStateChanged(int state, String incomingNumber) {
// TODO Auto-generated method stub
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE://
break;
case TelephonyManager.CALL_STATE_OFFHOOK://
break;
case TelephonyManager.CALL_STATE_RINGING://
Log.d("TAG", " :" + incomingNumber);
break;
}
}
}
MainActivity:
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
public class MainActivity extends Activity {
private Context context;
public static final String ACTION = "recordingFlag";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context = getApplicationContext();
//
Intent intent = new Intent();
intent.setAction(ACTION);
intent.setPackage(getPackageName());
context.startService(intent);
}
}
manifestプロファイル:
<!-- -->
<service android:name="com.example.service.PhoneService">
<intent-filter>
<action android:name="recordingFlag"/>
</intent-filter>
</service>
最後に、携帯電話の状態を読み取る権限を追加することを忘れないでください.
<uses-permission android:name="android.permission.READ_PHONE_STATE" />