私はアンドロイドが初めてで、このようなインテントを作成しました-
<receiver android:name=".IncommigCallListener" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
<receiver android:name=".OutgoingCallReciever" >
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
今、私はこのようなサービスを作成しました-
<service
android:name=".CallLogger"
android:exported="false"/>
クラスCallLogger
public class CallLogger extends IntentService {
public CallLogger(String name) {
super(name);
// TODO Auto-generated constructor stub
}
@Override
protected void onHandleIntent(Intent arg0) {
// TODO Auto-generated method stub
System.out.println("service started");
}
}
アプリケーションでアクティビティを行いたくありません。サービスを開始して、バックグラウンドで動作し、受信PHONE_STATE
してNEW_OUTGOING_CALL
意図できるようにしたいだけです。
このアプリケーションを起動すると、何もログに記録されず、意図もありませPHONE_STATE
んNEW_OUTGOING_CALL
。
アクティビティを使用せずにバックグラウンドでサービスを開始するにはどうすればよいですか?
編集 :
public class OutgoingCallReciever extends BroadcastReceiver {
@Override
public void onReceive(Context ctx, Intent intent) {
String number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
}
}
と
public class IncommigCallListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
String incommingCallNumber = incomingNumber;
System.out.println("incomming call : " + incomingNumber);
break;
}
}
}