Sobes.tech
Junior

Is it possible to not describe some components in the Manifest file?

sobes.tech AI

Answer from AI

Yes, it is possible.

Some components are registered dynamically or are not directly part of the standard Android lifecycle.

Examples:

  • Dynamic BroadcastReceiver: Can be registered and unregistered in code at runtime using Context.registerReceiver().
    // Registering BroadcastReceiver
    LocalBroadcastManager.getInstance(this).registerReceiver(myReceiver, new IntentFilter("com.example.ACTION"));
    // Unregistering
    LocalBroadcastManager.getInstance(this).unregisterReceiver(myReceiver);
    
  • Services started implicitly from other components: Although most Services should be declared in the Manifest, some used within existing, already declared components (e.g., Bound Service) can be implicitly linked without a separate declaration if the calling component is already declared. However, it is good practice to declare all Services.
  • Some types of Worker (WorkManager API): Although Workers are declared in the Manifest as part of WorkManager (androidx.work.impl.background.systemalarm.RescheduleReceiver, etc.), your custom Worker classes do not need to be declared directly as <receiver> in the Manifest. You declare them in code, and WorkManager manages them.
    // Example of creating a Work Request without explicitly declaring Worker in the Manifest
    WorkRequest myWorkRequest = new OneTimeWorkRequest.Builder(MyWorker.class).build();
    WorkManager.getInstance(this).enqueue(myWorkRequest);
    

However, except for dynamic BroadcastReceivers and certain use cases, most core components (Activity, Service, ContentProvider, static BroadcastReceiver) should be declared in AndroidManifest.xml. This is necessary for proper security, lifecycle management, and access by other applications (if exported).

Is it possible to not describe some components in the… - sobes.tech