본문 바로가기

카테고리 없음

Android 부팅시 자동으로 앱 띄우기

동작 확인함 (ANDROID 13)

boot receiver 생성후 아래와 같이 구현

package com.example.autoboot3

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.util.Log
import android.os.Build;
import android.net.Uri


class MyReceiver : BroadcastReceiver() {
    private fun startService(context: Context) {
        Log.d("ROYA", "ACTION_BOOT_COMPLETED try  MainActivity::class.java")
        val launchIntent = Intent("com.xx.automotivebrowser") //package name
        if (launchIntent == null) {
            Log.d("ROYA", "BOOT brs failed.... not existed ")
        } else {

            Log.d("ROYA", "BOOT WORKED BRS try open obigo .... ")
            launchIntent!!.setAction(Intent.ACTION_MAIN);
            launchIntent!!.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            launchIntent!!.addCategory(Intent.CATEGORY_LAUNCHER);
            //launchIntent.setAction("cohttp://m.google.android.apps.chrome.Main")
            context.startActivity(launchIntent);
        }
        /*
        val appIntent = Intent(context, MainActivity::class.java)
        appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        //val url = "https://play.google.com/store/apps/details?id=net.daum.android.tistoryapp"
        //val appIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
        //val appIntent = context.packageManager.getLaunchIntentForPackage("com.google.android.youtube")
        //appIntent!!.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        //appIntent!!.setAction(Intent.ACTION_MAIN)
        context.startActivity(appIntent);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
                context.startForegroundService(appIntent)
            } else {
                context.startService(appIntent)
            }
            Log.d("ROYA", "ACTION_BOOT_COMPLETED try  MainActivity::class.java end")
        }
    */
    }


    override fun onReceive(context: Context, intent: Intent) {
        val action = intent?.action
        if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
            Log.d("ROYA", "ACTION_BOOT_COMPLETED START  ")
            startService(context!!)
            Log.d("ROYA", "ACTION_BOOT_COMPLETED END  ")
        }
    }
}

 

테스트를 위한 버튼이 있는 main activity

package com.example.autoboot3

import android.os.Bundle
import android.util.Log
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.example.autoboot3.databinding.ActivityMainBinding
import android.os.Build;
import android.content.Intent
import android.widget.Button;

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.d("ROYA", "onCreate  ")

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val navView: BottomNavigationView = binding.navView

        val navController = findNavController(R.id.nav_host_fragment_activity_main)
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        val appBarConfiguration = AppBarConfiguration(
            setOf(
                R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications
            )
        )
        setupActionBarWithNavController(navController, appBarConfiguration)
        navView.setupWithNavController(navController)

        var my_btn : Button = findViewById<Button>(R.id.mybutton)
        my_btn.setOnClickListener {
            //START
            val launchIntent = Intent("com.XXX.automotivebrowser")
            if(launchIntent == null ) {
                Log.d("ROYA", "BOOT brs failed.... not existed ")
            } else {

                Log.d("ROYA", "BOOT WORKED BRS try open obigo .... ")
                launchIntent!!.setAction(Intent.ACTION_MAIN);
                launchIntent!!.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                launchIntent!!.addCategory(Intent.CATEGORY_LAUNCHER);
                //launchIntent.setAction("cohttp://m.google.android.apps.chrome.Main")
                startActivity(launchIntent);
            }
        }
/*
        //START
        val launchIntent = Intent("com.obigo.automotivebrowser")


        if(launchIntent == null ) {
            Log.d("ROYA", "BOOT brs failed.... not existed ")
            return
        }

        Log.d("ROYA", "BOOT WORKED BRS try open obigo .... ")
        launchIntent!!.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        launchIntent.setAction("cohttp://m.google.android.apps.chrome.Main")
        startActivity(launchIntent);
        */

        //END
    }
}