我想在 android 中编写一个服务,它将在后台跟踪拨出电话和短信。每当收到拨出电话事件或拨出 SMS 事件时,我想获取电话号码、日期、通话时长(如果拨出电话)和通话费用或短信费用等详细信息。我想将这些详细信息保存在本地数据库中。
我尝试将广播接收器与服务一起使用,但无法计算实际通话时长。对于 SMS,我发现我们需要在某个特定时间段后检查 SMS 文件夹是否已更新。是否有任何事件会在发送短信后通知。
以下是我迄今为止尝试过的代码-
我的 MainActivity.java
public class MainActivity extends Activity {
TextView call = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
call = (TextView) findViewById(R.id.call);
Intent intent = new Intent(this, HelloService.class);
startService(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
我的服务班
public class HelloService extends Service {
CallDurationReceiver receiver = null;
@Override
public void onCreate() {
receiver = new CallDurationReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
filter.addAction(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED);
registerReceiver(receiver, filter);
HandlerThread thread = new HandlerThread("ServiceStartArguments");
thread.start();
}
@Override …Run Code Online (Sandbox Code Playgroud)