Что вы подразумеваете под «ручкой»? Намерение?
OK - вот как:
Добавить в манифесте XML следующие строки:
<receiver android:name=".Outgoing">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
<receiver android:name=".Incoming">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
Итак, как вы можете видеть, вы будете иметь 2 BroadcastReceiver классы: Исходящие и входящие.
Вот Outgoing.java:
public class Outgoing extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, LogService.class));
}
}
(я начинаю свою службу из этого класса, так вот почему я использую context.startService ...)
Вот Incoming.java:
public class Incoming extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if(null == bundle)
return;
String state = bundle.getString(TelephonyManager.EXTRA_STATE);
if(state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING))
{
context.startService(new Intent(context, LogService.class));
}
}
}
Я использую это на пряниках и фрукто, и он работает нормально.
[TelephonyManager?] (Http://developer.android.com/reference/android/telephony/TelephonyManager.html) – m0skit0