我的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进行处理。这与AlarmManagersample code here)使用的模式相同,只是使用不同的触发器。尽管如此,我还没有试过这个具体的Intent,所以我不能确定这个技术是否有效。但是,如果确实如此,那么它大部分时间都会使服务内存不足(如果它的工作完成,则会关闭IntentService),这会让您的任务处理用户感到满意。

或者是有可能推出我的 应用程序总是 运行的服务?

没有,因为用户都在对他们的设备的控制,而不是你或I.