Ну, я много искал, но не нашел точного ответа, как экспортировать Activity, поэтому приложение может запустить его с помощью startActivityforResult.
Как мне это достичь? Должен ли я каким-то образом изменить манифест?
Ну, я много искал, но не нашел точного ответа, как экспортировать Activity, поэтому приложение может запустить его с помощью startActivityforResult.
Как мне это достичь? Должен ли я каким-то образом изменить манифест?
Вам нужно объявить фильтр намерений в вашем манифесте (я взял следующий пример из сканера штрих-кода):
<activity android:name="...">
<intent-filter>
<action android:name="com.google.zxing.client.android.SCAN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Затем создайте намерение с той же строкой действия:
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
startActivityForResult(intent, code);
Android должен начать вашу деятельность (или он отобразит раскрывающийся список, если несколько приложений используют одну и ту же строку действий).
Как альтернатива ответу Далмас, вы можете фактически экспортировать Activity без создания <intent-filter> (наряду с хлопотами при создании пользовательского действия).
В Manifest отредактируйте тэг Activity так:
<activity
android:name=".SomeActivity"
....
android:exported="true" />
Важная часть android:exported="true", этот тег export определяет, может ли активность запускаться компонентами других приложений ". Если ваш <activity> содержит <intent-filter>, то этот тег автоматически устанавливается на true, если он не установлен, по умолчанию он установлен на false.
Затем для запуска Activity выполните следующее:
Intent i = new Intent();
i.setComponent(new ComponentName("package name", "fully-qualified name of activity"));
startActivity(i);
Конечно, с помощью этого метода вам нужно будет узнать точное название запускаемой вами задачи.