Rumah > Java > teks badan

Bagaimana untuk melancarkan apl Android secara automatik apabila menghidupkan TV?

王林
Lepaskan: 2024-02-22 13:04:14
ke hadapan
453 orang telah melayarinya

Editor PHP Xinyi membawakan anda Soal Jawab java tentang pelancaran aplikasi Android secara automatik apabila menghidupkan TV. Dalam pembangunan sebenar, kadangkala perlu untuk melaksanakan fungsi sedemikian Artikel ini akan berkongsi penyelesaian untuk membantu anda merealisasikan keperluan ini dengan mudah. Dengan perkembangan teknologi yang berterusan, pembangun perlu sentiasa mempelajari pengetahuan baharu dan meningkatkan tahap teknikal mereka. Mari lihat cara melaksanakan ciri ini!

Kandungan soalan

Saya menambahkan kebenaran ini pada manifes

<uses-permission android:name="android.permission.receive_boot_completed" />
Salin selepas log masuk

Saya menambah bootreceiver ke senarai:

<receiver
            android:name="com.portlmedia.streets.bootreceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter android:directbootaware="true">
                <action android:name="android.intent.action.boot_completed" />
                <action android:name="android.intent.action.locked_boot_completed" />
                <action android:name="android.intent.action.quickboot_poweron" />
                <action android:name="android.intent.action.reboot"/>
            </intent-filter>
        </receiver>
Salin selepas log masuk

Saya mencipta bootreceiver dalam projek saya:

public class BootReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
            Intent activityIntent = new Intent(context, MainActivity.class);
            context.startActivity(activityIntent);
        }
    }
}
Salin selepas log masuk

Soalan saya ialah, jika anda boleh membantu saya, bagaimana saya boleh mengujinya menggunakan emulator dalam studio android?

Saya meletakkan titik putus dalam kaedah onreceive tetapi apabila saya melancarkan aplikasi ia tidak mengenainya Saya juga telah mencuba menggunakan mula semula sejuk tetapi tiada apa yang berjaya dan saya ingin menguji sama ada ia benar-benar berfungsi atau mungkin ada yang salah dengan kod saya?

Penyelesaian

Langkah 1: Kod Manifes

Tambah kebenaran

<uses-permission android:name="android.permission.system_alert_window" />
<uses-permission android:name="android.permission.foreground_service" />
Salin selepas log masuk

Di dalam kelas permohonan

<receiver
            android:name=".bootreceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <category android:name="android.intent.category.default" />

                <action android:name="android.intent.action.boot_completed" />
                <action android:name="android.intent.action.quickboot_poweron" />
                <action android:name="com.htc.intent.action.quickboot_poweron" />  
            </intent-filter>
        </receiver>

       <service
            android:name=".appstartservice"
            android:enabled="true"
            android:exported="true"
            android:stopwithtask="false" />
Salin selepas log masuk

Langkah 2: Dapatkan kebenaran tindanan yang diberikan oleh pengguna atau

adb shell pm grant com.example.appstart android.permission.system_alert_window
Salin selepas log masuk

Langkah 3: penerima but

class bootreceiver : broadcastreceiver() {

    override fun onreceive(context: context, intent: intent?) {
        log.i(tag, "onreceive: boot received ${intent?.action}")
        val serviceintent = intent(context, appstartservice::class.java)
        contextcompat.startforegroundservice(context, serviceintent)
    }

    companion object {
        private const val tag = "bootreceiver"
    }
}
Salin selepas log masuk

Langkah 4: Kod Perkhidmatan

class AppStartService: Service() {

    override fun onBind(intent: Intent?): IBinder? {
        return null
    }

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        return START_STICKY
    }

    override fun onCreate() {
        super.onCreate()

        startForeground(1, createNotification())

        GlobalScope.launch {
            withContext(Dispatchers.Main) {
                try {
                    val intent = Intent(this@AppStartService, MainActivity::class.java)
                    intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
                    startActivity(intent)
                } catch (ex: Exception) {
                    Log.e(TAG, "onCreate: ", ex)
                }
            }
        }

    }

    private fun createNotification(): Notification {
        val serviceChannel = NotificationChannel(
            CHANNEL_ID,
            "${getString(R.string.app_name)} Service",
            NotificationManager.IMPORTANCE_DEFAULT
        )
        val manager = getSystemService(
            NotificationManager::class.java
        )
        manager.createNotificationChannel(serviceChannel)

        return NotificationCompat.Builder(this, CHANNEL_ID)
            .setContentTitle("${getString(R.string.app_name)} Service")
            .setSilent(true)
            .setContentText("Please restart this device if this service is not running")
            .setSmallIcon(R.mipmap.ic_launcher)
            .build()
    }


    companion object {
        private const val TAG = "AppStartService"
        private const val CHANNEL_ID = "app-start-service"
    }

}
Salin selepas log masuk

Dalam kes saya, kelas penerima but menerima operasi penyiapan but. Jadi, bekerja untuk saya! Pastikan tindakan penyiapan but berfungsi pada peranti tertentu.

Atas ialah kandungan terperinci Bagaimana untuk melancarkan apl Android secara automatik apabila menghidupkan TV?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!