web-dev-qa-db-ja.com

起動時にアプリケーションを起動/起動する方法Android

タブレットの起動時にアプリを起動して、タブレットの起動時にユーザーが最初に目にするのはアプリのメインアクティビティであるようにします。
LauncherActivityについて読んだことがありますが、使用方法がわかりません。
この点についての提案、リンク、またはチュートリアルを教えてください。
LauncherActivityは最良の方法ですか、それとも代替手段がありますか?

37
Marco Gallella

これらのコード行はあなたに役立つかもしれません...

ステップ1:AndroidManifest.xmlで許可を設定する

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

ステップ2:このインテントフィルターを受信機に追加する

<receiver Android:name=".BootReceiver">
    <intent-filter >
        <action Android:name="Android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

ステップ3:これで、ReceiverクラスのonReceiveメソッドからアプリケーションの最初のアクティビティを開始できます

public class BootReceiver extends BroadcastReceiver {

   @Override
   public void onReceive(Context context, Intent intent) {
       Intent myIntent = new Intent(context, MainActivity.class);
       myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       context.startActivity(myIntent);
   }

}
79
vishesh chandra

タブレットの起動時にアプリを起動するには、BOOT_COMPLETEDアクションをリッスンし、それに反応する必要があります。 BOOT_COMPLETEDは、システムの起動が完了した後に一度ブロードキャストされるブロードキャストアクションです。このアクションをリッスンするには、 BroadcastReceiver を作成し、BOOT_COMPLETEDアクションでインテントを受信すると起動アクティビティを開始します。

この許可をマニフェストに追加します。

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

プロジェクトにカスタムBroadcastReceiverを作成します。

public class MyBroadCastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
            Intent i = new Intent(context, MyActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }
    }
} 

次に、BroadCastReceiverをマニフェストに追加して、マニフェストファイルを変更します。

<receiver Android:name=".MyBroadcastReceiver">
    <intent-filter>
       <action Android:name="Android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>
13
Gunnar Karlsson

@vishesh chandraによる回答は正しいです。ただし、アプリはデフォルトで外部ストレージにインストールされているため、一部のデバイスでは機能しません。必ず指定してください

Android:installLocation="internalOnly"

そうしないと、アプリがSDカードにインストールされている場合、ブート完了アクションを受信できません。これをmanifest.xmlファイルのapplicationタグに追加すると、機能します。

使用法:

<application
        Android:name=".Data.ApplicationData"
        Android:allowBackup="true"
        Android:hardwareAccelerated="true"
        Android:icon="@mipmap/ic_launcher"
        Android:installLocation="internalOnly"
        Android:label="@string/app_name"
        Android:supportsRtl="true"
        Android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen">
        <!--activities, services...-->
</application>

数日間直面していたこの質問に1点追加したいと思います。私はすべての答えを試しましたが、それらは私のために働いていませんでした。 Androidバージョン5.1を使用している場合は、これらの設定を変更してください。

Androidバージョン5.1を使用している場合は、アプリの設定から(起動を制限する)を選択解除する必要があります。

設定>アプリ>アプリ>起動を制限する(選択解除)

写真をご覧ください。

Image

1
Manish Yadav