2011-03-09 184 views
6

我正在爲Android設備編寫一個軟件套件,用於跟蹤通話時間和各種其他通話信息。我希望其中一個應用程序作爲服務運行,而不從一個活動啓動,我希望它在手機啓動時立即初始化,並不斷運行,監聽電話,將信息記錄到數據庫中必要。該服務需要在每次通話結束時向用戶提供對話。Android服務應用程序

2個問題:

  1. 如何獲取程序(服務)在開機自動,無需用戶設置或交互初始化?

  2. 我的印象是,你不能在沒有使用Activity的情況下實例化和顯示對話框。我希望對話框出現在用戶當前在屏幕上的任何位置,並顯示一個對話框。有沒有辦法讓活動在當前活動中完全透明,還是有辦法顯示服務中的對話框?

在此先感謝。

回答

10

如何讓程序(服務)在啓動時自動初始化,無需用戶設置或交互?

此權限添加到您的清單:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

然後接收器添加到您的清單:

<receiver android:name="your.package.BootReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <category android:name="android.intent.category.HOME" /> 
    </intent-filter> 
</receiver> 

建立在Java代碼中的接收器:

public class BootReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // start the service from here 
    } 
} 

我的印象是,你不能在沒有使用Activity的情況下實例化和顯示對話框。我希望對話框出現在用戶當前在屏幕上的任何位置,並顯示一個對話框。有沒有辦法讓活動在當前活動中完全透明,還是有辦法顯示服務中的對話框?

是的,的確如此。你必須有一個彈出對話框的活動。要創建一個透明的活動添加下面的風格在res/values/styles.xml文件下面是一個完整的文件(如果你沒有一個,創建它。):

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme.Transparent" parent="android:Theme"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowBackground">#00000000</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:backgroundDimEnabled">false</item> 
    </style> 
</resources> 

然後將該樣式應用到你的活動,例如:

<activity android:name=".TransparentActivity" android:theme="@style/Theme.Transparent"> 
... 
</activity> 
相關問題