42

タブレットの起動時にアプリを起動したいので、ユーザーがタブレットを起動したときにアプリの主なアクティビティが最初に表示されます。
LauncherActivityについて読みましたが、使い方がわかりません。
誰かがこれに関する提案、リンク、またはチュートリアルで私を助けることができますか?
LauncherActivityは最良の方法ですか、それとも代替手段がありますか?

4

4 に答える 4

86

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

ステップ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>

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

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

}
于 2012-05-03T09:32:25.360 に答える
15

タブレットの起動時にアプリを起動する場合は、BOOT_COMPLETEDアクションをリッスンし、それに反応する必要があります。BOOT_COMPLETEDは、システムの起動が完了した後に1回ブロードキャストされるブロードキャストアクションです。BroadcastReceiverを作成すると、このアクションを聞くことができます。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>
于 2012-05-03T09:47:07.627 に答える
5

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

android:installLocation="internalOnly"

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

使用法:

<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>
于 2017-03-20T09:49:38.280 に答える
1

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

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

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

写真をご覧ください。

画像

于 2017-08-30T06:24:10.223 に答える