操作系統發生時會發生一些事件。例如。接收短信,電話狀態(發送,接收)。通過閱讀您的文章,我認爲您應該使用廣播接收器註冊您的應用程序。這是一個示例代碼。
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>
}
終於不用forgate添加PHONE_STATE權限。
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
發佈你的'CallService'代碼。 – iTurki 2012-07-28 18:07:17
...和logcat錯誤。也請直接編輯它們到這個問題中;突出顯示您的代碼並按下Ctrl + K以正確格式化代碼塊。 – Sam 2012-07-28 18:07:45