Androidでスタートアップ時に特定のアプリケーションを起動する
最低限必要なコードのみ掲載。
今回はスタートアップ時にChromeを起動するサンプル。
元のソースコードはこちら。
https://github.com/itog/StartupSample
Main.java
package com.itog_lab.sample.startup; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.util.Log; /** * スタートアップクラス */ public class Main extends Activity { private final int TIMEOUT_MILLIS = 60 * 1000; // ms private Handler mHandler = new Handler(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.v("startupSample", "Success"); mHandler.postDelayed(new Runnable() { @Override public void run() { bootChrome(); } }, TIMEOUT_MILLIS); } private void bootChrome() { Intent intent = new Intent(Intent.ACTION_VIEW, null); //intent.setClassName("com.android.chrome", "com.android.chrome.Main"); // ver 38 intent.setClassName("com.android.chrome", "com.google.android.apps.chrome.Main"); // ver 39 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); startActivity(intent); } }
MyReceiver.java
package com.itog_lab.sample.startup; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; /** * [このアプリケーションの処理フロー] * BroadcastReceiverをextendしているMyReceiverが、Android起動のイベント取得 * -> onReceive実行、new IntentしてMainクラスの内部関数(onCreate)が実行される * -> Chromeなどなどが立ち上がる */ public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, Main.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itog_lab.sample.startup" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Main" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".MyReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> </application> <uses-sdk android:minSdkVersion="4" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> </manifest>