2010-02-21 118 views
3

我想知道是否有可能啓動我的應用程序,每當一個新的條目被寫入電話通訊記錄(即外出,即將到來或未接電話)。我的Android應用程序可以從內置的電話呼叫日誌應用程序啓動嗎?

我編寫了一個應用程序,根據用戶偏好管理通話記錄條目,方法是收聽android.intent.action.PHONE_STATE事件。只要進程正在運行,我的應用程序就可以正常工作。但是,如果用戶使用任務殺手級應用程序停止了我的應用程序,則無法管理日誌條目,因爲我的應用程序本身沒有運行。我需要一種方法來確保我的應用程序在後臺啓動,如果它已經在運行時發生了android.intent.action.PHONE_STATE

或者有可能作爲一個始終運行的服務啓動我的應用程序?

在此先感謝。 巴拉

回答

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> 
0

但是,如果用戶使用任務殺手程序 應用程序停止了我的 應用程序,則不會管理日誌條目 ,因爲我的應用程序本身的 未運行。

沒有什麼可以做到這一點。如果用戶通過設置>應用程序頁面終止服務,則會發生同樣的情況。

我需要一種方法來確保我的 應用程序在後臺 推出,如果它是不是已經 奔跑時 android.intent.action.PHONE_STATE 發生。

你可以試試這個意圖在您的清單建立BroadcastReceiver,並且有它的路由控制權交給一些IntentService進行處理。這與AlarmManagersample code here)使用的模式相同,只是使用不同的觸發器。儘管如此,我還沒有試過這個具體的Intent,所以我不能確定這個技術是否有效。但是,如果確實如此,那麼它大部分時間都會使服務內存不足(如果它的工作完成,則會關閉IntentService),這會讓您的任務處理用戶感到滿意。

或者是有可能推出我的 應用程序總是 運行的服務?

沒有,因爲用戶都在對他們的設備的控制,而不是你或I.

相關問題