我想知道每当新条目写入电话通话记录(即外出,来电或未接来电)时是否可以启动我的应用程序。
我编写了一个应用程序,通过监听 android.intent.action.PHONE_STATE 事件的发布,根据用户首选项管理呼叫日志条目。只要其进程正在运行,我的应用程序就可以正常运行。但是,如果用户已使用任务杀手应用程序停止了我的应用程序,则无法管理日志条目,因为我的应用程序本身未运行。我需要一种方法来确保我的应用程序在后台启动,如果它在 android.intent.action.PHONE_STATE 发生时尚未运行。
或者是否可以将我的应用程序作为始终运行的服务启动?
提前致谢。 巴拉
答案 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
进行处理。它与AlarmManager
(sample code here)使用的模式相同,只是使用不同的触发器。我没有尝试过这个特定的Intent
,所以我无法确定这项技术是否有效。但是,如果确实如此,它可以在大多数情况下保持服务内存不足(IntentService
在其工作完成时关闭),这将使您的任务杀死用户满意。
或者是否有可能启动我的 应用程序作为始终的服务 运行
不,因为用户可以控制他们的设备,而不是你或我。