メインランチャーとして含まれていないがActivity
、メインランチャーとしてサービスを含むアプリを作成するにはどうすればよいですか?
1 に答える
はい、可能です。AndroidManifest でアクティビティを定義しないだけで問題ありません。
ただし、サービスを呼び出せるようにするためにすべきことは、ブロードキャスト レシーバーを使用していくつかの電話アクションをリッスンすることです。
このようなもの:
<receiver android:name="com.example.MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
</intent-filter>
</receiver>
アクション BOOT_COMPLETED および MY_PACKAGE_REPLACED は、ユーザーのデバイスが再起動されたとき (明らかに) トリガーされますが、アプリケーションのアップグレード (または初期インストール) が (たとえば Play ストア経由で) 行われるたびにもトリガーされます。その後、サービスを再開できます (または、サービスのアラームを x 分/時間/日/... でトリガーするようにスケジュールします)。
可能なユーザー入力がない場合、別の便利なアクションは ACTION_USER_PRESENT です。これは、ユーザーが電話のロックを解除するたびにトリガーされます。
注意: BOOT_COMPLETED アクションの場合、マニフェストに権限を追加する必要があります。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
次に、「MyBroadcastReciever」クラスでは、アクションをチェックするために特別なことを何もしないでください。マニフェストで指定されたアクションによってのみそこに入ることがわかっているので、ブロードキャストレシーバーは次のようになります。
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Do your work here...
}
}
トリガーされるすべてのサービスも、マニフェストで定義する必要があります。それを忘れないでください!