我的Android应用程序可以从内置的电话呼叫日志应用程序启动吗?
我想知道是否有可能启动我的应用程序,每当一个新的条目被写入电话通讯记录(即外出,即将到来或未接电话)。我的Android应用程序可以从内置的电话呼叫日志应用程序启动吗?
我编写了一个应用程序,根据用户偏好管理通话记录条目,方法是收听android.intent.action.PHONE_STATE事件。只要进程正在运行,我的应用程序就可以正常工作。但是,如果用户使用任务杀手级应用程序停止了我的应用程序,则无法管理日志条目,因为我的应用程序本身没有运行。我需要一种方法来确保我的应用程序在后台启动,如果它已经在运行时发生了android.intent.action.PHONE_STATE。
或者有可能作为一个始终运行的服务启动我的应用程序?
在此先感谢。 巴拉
可以启动你的应用程序作为服务:
http://developer.android.com/reference/android/app/Service.html
这里是一个基本的服务实现:
public class MyService extends Service
{
@Override
public IBinder onBind(Intent intent)
{
return null;
}
@Override
public void onCreate()
{
super.onCreate();
Log.i("Service", "Service is starting");
}
@Override
public void onDestroy()
{
super.onDestroy();
Log.i("Service", "Service stopped");
}
}
AndroidManifest.xml中
<application ....>
<service android:name=".App.MySyncService" />
</application>
但是,如果用户使用任务杀手程序 应用程序停止了我的 应用程序,则不会管理日志条目 ,因为我的应用程序本身的 未运行。
没有什么可以做到这一点。如果用户通过设置>应用程序页面终止服务,则会发生同样的情况。
我需要一种方法来确保我的 应用程序在后台 推出,如果它是不是已经 奔跑时 android.intent.action.PHONE_STATE 发生。
你可以试试这个意图在您的清单建立BroadcastReceiver
,并且有它的路由控制权交给一些IntentService
进行处理。这与AlarmManager
(sample code here)使用的模式相同,只是使用不同的触发器。尽管如此,我还没有试过这个具体的Intent
,所以我不能确定这个技术是否有效。但是,如果确实如此,那么它大部分时间都会使服务内存不足(如果它的工作完成,则会关闭IntentService
),这会让您的任务处理用户感到满意。
或者是有可能推出我的 应用程序总是 运行的服务?
没有,因为用户都在对他们的设备的控制,而不是你或I.