電話に発信通話があるときにサービスを実行しようとしています。しかし、何らかの理由で、これが発生するとサービスが実行されません。「CallReceiver」のコードが実行されることはわかっています。これは、トースト メッセージが実行された場合に表示するために使用したためです。メイン アクティビティを通じてサービスを実行できますが、これは発信呼び出しが行われるかどうかに関係なく実行されることを意味します....
以下は私のコードです:
受信機:
package com.example.hiworld;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
public class CallReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, CallService.class));
Toast.makeText(context, "Call Receiver started",
Toast.LENGTH_LONG).show();
Log.d("Calling Someone", "onReceived");
}
}
サービス:
package com.example.hiworld;
import android.app.IntentService;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.widget.Toast;
public class CallService extends IntentService {
public long StartTime=0;
public long EndTime =0;
public long TotalTime = 0;
public long NumFreeMins = 0;
public CallService() {
super("CallService");
}
@Override
protected void onHandleIntent(Intent intent) {
StartTime = (System.currentTimeMillis())/60;
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
if(tm.getCallState()==0) //getting the time whenever the phone is off
{
EndTime = (System.currentTimeMillis())/60;
TotalTime = EndTime-StartTime;
NumFreeMins = 300-TotalTime;
//notify user
this.displaymsg();
}
}
public void displaymsg()
{
Toast toast = Toast.makeText(getApplicationContext(), ""+NumFreeMins, Toast.LENGTH_SHORT);
toast.show();
}
}
私は何人かの人々が次の行を使用しているのを見てきました:
context.startService(new Intent(this, CallService.class));
それ以外の:
context.startService(new Intent(context, CallService.class));
しかし、後者は私にはうまくいきません...