4

私はアンドロイドが初めてで、このようなインテントを作成しました-

<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_STATENEW_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;
        }
    }
}
4

3 に答える 3

0

何も印刷されないのはSystem.out.println、Android では機能しないという問題が原因です。バックグラウンド プロセスはどこでこのことを行うと思いますprintか?

これをに変更してからLog.d(tag, msg)、logcat をチェックして出力を確認する必要があります。それ以外の場合は、コードが適切に実行されている可能性があります。

于 2014-11-08T17:53:10.990 に答える