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!
Saya menambahkan kebenaran ini pada manifes
<uses-permission android:name="android.permission.receive_boot_completed" />
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>
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); } } }
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?
Langkah 1: Kod Manifes
Tambah kebenaran
<uses-permission android:name="android.permission.system_alert_window" /> <uses-permission android:name="android.permission.foreground_service" />
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" />
Langkah 2: Dapatkan kebenaran tindanan yang diberikan oleh pengguna atau
adb shell pm grant com.example.appstart android.permission.system_alert_window
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" } }
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" } }
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!