Это довольно просто в вашем случае, так как вам не нужна дополнительная логика, а просто больше уровней, поэтому я буду придерживаться этого конкретного случая:
Вы можете (или, вероятно, уже) сохранить свои игровые уровни как resources в вашем .apk, так что плагин может быть стандартным .apk, который не появится в списке Программы. Чтобы предотвратить его появление, просто не объявляйте средство запуска категории:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Как только приведенный выше фрагмент кода НЕ появится в AndroidManifest вашего плагина, он не будет напрямую доступен для пользователя.
Когда начинается ваша основная игровая активность, она должна проверить наличие плагинов, вы можете сделать это, позвонив по номеру PackageManager.queryIntentActivities
. И запрос определенного намерения, которое вы объявили в файле AndroidManifest вашего плагина, например:
<intent-filter>
<action android:name="com.your.package.name.LEVEL_PACK" />
</intent-filter>
Код запроса будет:
PackageManager packageManager = getPackageManager();
Intent levelsIntent = new Intent("com.your.package.name.LEVEL_PACK");
List<ResolveInfo> levelPacks = packageManager.queryIntentActivities(levelsIntent, 0);
Есть и другие способы сделать это, но это довольно тривиально и понятно.
Последний шаг - доступ к уровням из установленных пакетов уровней. Вы можете сделать это, позвонив по номеру: PackageManager.getResourcesForActivity
, загрузив соответствующие ресурсы и используя их по своему усмотрению.