Intereting Posts
Как использовать ProGuard в Android Studio? Android Firebase DynamiteModule: не удалось загрузить дескриптор модуля ListView с интерактивным / редактируемым виджетами Как использовать аутентификацию дайджеста в android? Android – предотвращение белого экрана при запуске Как я могу удалить заголовок и значок полностью в Actionbar sherlock? Можно ли всегда показывать панель действий при использовании функции настройкиPan в качестве режима мягкого ввода? Android Wifi Direct: предотвращение принятия пользователем при подключении к известному партнеру Устаревший метод, но для замены метода требуется более высокий api Android прокручивается в нижней части списка Элементы ListView не доступны для кликов. Зачем? Возврат к магазину приложений amazon для оценок Android SSLServerSocket вызывает увеличение собственной памяти в приложении, OOM Размер указателя. Насколько велика ссылка на объект? Получить идентификатор контейнера фрагмента

Запуск мероприятий из разных пакетов

У меня есть активность A в пакете один, и я хочу запустить намерение, которое будет заниматься активностью B, которая находится в пакете два.

Как я могу это сделать? Любые образцы будут приветствоваться.

Это то, что я сделал, и ошибка, которую я получаю:

Первая активность («MainActivity») в пакете: com.abelski.currencyclient и вторая активность («SecondActivity» в другом пакете: com.idan.second

Теперь я хочу позвонить из MainActivity в SecondActivity.

Ive добавила эту строку в манифест MainActivity:

<activity android:name="com.idan.second.SecondApplicationActivity"></activity> 

Теперь в основной деятельности я получил эту кнопку, которая запускает эту строку:

 Intent intent = new Intent(MainActivity.this,SecondApplicationActivity.class); 

И это rror:

 04-29 09:20:59.197: ERROR/AndroidRuntime(399): Uncaught handler: thread main exiting due to uncaught exception 04-29 09:20:59.276: ERROR/AndroidRuntime(399): java.lang.NoClassDefFoundError: com.idan.second.SecondApplicationActivity 04-29 09:20:59.276: ERROR/AndroidRuntime(399): 

Solutions Collecting From Web of "Запуск мероприятий из разных пакетов"

Я предполагаю, что под «пакетами» вы подразумеваете приложения.

У нас есть: – ApplicationA с FirstActivity – ApplicationB со SecondActivity

Если в файле ApplicationManifest.xml ApplicationB в объявлении SecondActivity вы добавляете фильтр намерений, например:

 <activity android:name=".SecondActivity"> <intent-filter> <action android:name="applicationB.intent.action.Launch" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 

Вы можете создать Intent для запуска этой SecondActivity из FirstActivity с:

 Intent intent = new Intent("applicationB.intent.action.Launch"); startActivity(intent); 

Что все это значит:

  • SecondActivity имеет фильтр для действия намерения "applicationB.intent.action.Launch"
  • Когда вы создаете намерение с этим действием и вызываете «startActivity», система найдет действие (если оно есть), которое отвечает на него

Документация для этого: https://developer.android.com/reference/android/content/Intent.html

У меня была та же проблема, и решение было еще одним уровнем в корне вашего имени пакета.

Если у вас есть два пакета «com.first ….» и «com.second …», а манифест ссылается на «com.first». Затем вы можете реорганизовать оба пакета, чтобы повторно использовать первую часть. Например, «com.package.first» и «com.package.second». Затем ваш манифест должен быть также обновлен

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.package"> ... <activity android:name=".first.FirstPackageActivity" android:label="FirstPackageActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <activity android:name=".second.SecondPackageActivity" android:label="SecondPackageActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> 

Ваш код Java может создать намерение и начать работу обычным способом:

 Intent intent = new Intent(this,ActivityClassName.class); startActivity(intent); 

Если пакет, который вы упомянули здесь, тот же, что и в приложении, я думаю, что ответ в вопросе Android: «Запуск активности для другого стороннего приложения» проще. С первым ответом на этот вопрос вам не нужно вносить какие-либо изменения в Ваше второе приложение.

Используйте явные намерения:

 Intent intent = new Intent(context,ClassName.class); 

Где ClassName – из другого пакета.

Иногда вы не будете знать имя класса в таких случаях, вам придется полагаться на намерение, которое рекламируется целевым классом.