2011-03-09 185 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> 
相关问题