オペレーティングシステムが発生したときにブロードキャストするイベントがいくつかあります。例えば。SMSの受信、通話状態(送信、受信)。あなたの投稿を読んで、私はあなたがあなたのアプリを放送受信機に登録するべきだと思います。これがサンプルコードです。
public class PhoneCallState extends BroadcastReceiver
{
static long start_time, end_time;
@Override
public void onReceive(Context context, Intent intent)
{
final Bundle extras = intent.getExtras();
if(intent.getAction().equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED))
{
final String state = extras.getString(TelephonyManager.EXTRA_STATE);
if ("RINGING".equals(state))
{
Toast.makeText(context, "Ringing", Toast.LENGTH_LONG).show();
}
if ("OFFHOOK".equals(state))
{
start_time = System.currentTimeMillis();
Toast.makeText(context, "Off", Toast.LENGTH_LONG).show();
}
if ("IDLE".equals(state))
{
end_time = System.currentTimeMillis();
long duration = (end_time - start_time) /1000;
Toast.makeText(context, "Duration : " + duration, Toast.LENGTH_LONG).show();
}
}
}
そして、マニフェストファイルに受信者を登録します。
<receiver android:name=".PhoneCallState">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
}
最後に、PHONE_STATEパーミッションを追加することを忘れないでください。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />