我的Android应用程序可以从内置的电话呼叫日志应用程序启动吗?

时间:2010-02-21 09:28:48

标签: android

我想知道每当新条目写入电话通话记录(即外出,来电或未接来电)时是否可以启动我的应用程序。

我编写了一个应用程序,通过监听 android.intent.action.PHONE_STATE 事件的发布,根据用户首选项管理呼叫日志条目。只要其进程正在运行,我的应用程序就可以正常运行。但是,如果用户已使用任务杀手应用程序停止了我的应用程序,则无法管理日志条目,因为我的应用程序本身未运行。我需要一种方法来确保我的应用程序在后台启动,如果它在 android.intent.action.PHONE_STATE 发生时尚未运行。

或者是否可以将我的应用程序作为始终运行的服务启动?

提前致谢。 巴拉

2 个答案:

答案 0 :(得分:2)

您可以将服务启动:

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>

答案 1 :(得分:0)

  

但是,如果用户已停止我的   应用任务杀手   应用程序,然后日志条目可以   不能像我的应用程序本身那样进行管理   没跑了。

没有什么可以做的。如果用户通过设置&gt;终止您的服务,则会发生同样的情况。申请页面。

  

我需要一种方法来确保我的   应用程序是在   背景如果还没有   跑的时候   android.intent.action.PHONE_STATE   发生。

您可以尝试在清单中为此Intent设置BroadcastReceiver,并将其路由控制权交给某些IntentService进行处理。它与AlarmManagersample code here)使用的模式相同,只是使用不同的触发器。我没有尝试过这个特定的Intent,所以我无法确定这项技术是否有效。但是,如果确实如此,它可以在大多数情况下保持服务内存不足(IntentService在其工作完成时关闭),这将使您的任务杀死用户满意。

  

或者是否有可能启动我的   应用程序作为始终的服务   运行

不,因为用户可以控制他们的设备,而不是你或我。