6

通話時間やその他のさまざまな通話情報を追跡する Android デバイス用のソフトウェア スイートを作成しています。アプリケーションの 1 つをアクティビティから開始せずにサービスとして実行し、電話の起動時にすぐに初期化して、常に実行し続け、電話をリッスンし、情報をデータベースに記録したいと考えています。必要。Service は、各呼び出しの最後にユーザーにダイアログを表示する必要があります。

2 つの質問:

  1. プログラム (サービス) をブート時に自動的に初期化し、ユーザー設定や操作を必要としないようにするにはどうすればよいですか?

  2. アクティビティを使用しないと、ダイアログをインスタンス化して表示できないという印象を受けました。ユーザーが現在画面に表示しているものにダイアログを重ねて表示し、ダイアログを表示したいと思います。アクティビティを現​​在のアクティビティに対して完全に透明にする方法はありますか、またはサービスからダイアログを表示する方法はありますか?

前もって感謝します。

4

1 に答える 1

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

アクティビティを使用しないと、ダイアログをインスタンス化して表示できないという印象を受けました。ユーザーが現在画面に表示しているものにダイアログを重ねて表示し、ダイアログを表示したいと思います。アクティビティを現​​在のアクティビティに対して完全に透明にする方法はありますか、またはサービスからダイアログを表示する方法はありますか?

はい、本当です。ダイアログをポップアップするアクティビティが必要です。透明なアクティビティを作成するには、次のスタイルを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>
于 2011-03-09T20:19:08.787 に答える