Android服务应用程序

moo*_*ese 6 android android-service

我正在为Android设备编写一个软件套件,用于跟踪通话时间和各种其他通话信息.我希望其中一个应用程序作为服务运行,而不是从一个Activity启动,我希望它在手机启动时立即初始化,并且不断运行,监听电话,将信息记录到数据库中必要.服务将需要在每次呼叫结束时向用户显示一个对话框.

2个问题:

  1. 如何在没有用户设置或需要交互的情况下自动启动程序(服务)进行初始化?

  2. 我的印象是你不能在不使用Activity的情况下实例化和显示对话框.我希望对话框显示在用户当前在屏幕上的任何内容上,并显示一个对话框.有没有办法让Activity对当前Activity完全透明,或者有没有办法从服务中显示对话框?

提前致谢.

Cri*_*ian 10

如何在没有用户设置或需要交互的情况下自动启动程序(服务)进行初始化?

将此权限添加到清单:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Run Code Online (Sandbox Code Playgroud)

然后在清单中添加一个接收器:

<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>
Run Code Online (Sandbox Code Playgroud)

用Java代码创建接收器:

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

我的印象是你不能在不使用Activity的情况下实例化和显示对话框.我希望对话框显示在用户当前在屏幕上的任何内容上,并显示一个对话框.有没有办法让Activity对当前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>
Run Code Online (Sandbox Code Playgroud)

然后将样式应用于您的活动,例如:

<activity android:name=".TransparentActivity" android:theme="@style/Theme.Transparent">
...
</activity>
Run Code Online (Sandbox Code Playgroud)