2015-10-30 3 views
6

Я создал aar, и я добавил его в свой проект как модуль. в этом модуле у меня есть HelloWorldActivity, которую я хочу запустить.как начать активность в другом модуле явно

Модифицированный модуль выглядит так.

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="ir.sibvas.testlibary1.HelloWorldActivity" 
     android:label="@string/app_name" > 

     <intent-filter> 
      <action android:name="ir.sibvas.testlibary1.HelloWorldActivity" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name=".MainActivity" 
     android:label="@string/title_activity_main" > 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 


    </activity> 
</application> 

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

Intent intent = new Intent("ir.sibvas.testlibary1.HelloWorldActivity"); 
startActivity(intent); 

, но как вы можете увидеть этот код неявно и проблема с неявным вызовом является то, что если я использовать этот модуль в более одно приложение, установленное на пользовательском устройстве, отобразит диалоговое окно выбора приложения для пользователя. Итак, как сделать этот вызов явным, не позволяя пользователю переключать приложение?

этот код не будет работать, так как HelloWorldActivity не в том же пакете, активности вызовов

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

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

+0

Поставщик контента может вам помочь. –

+0

Намерение намерения = новое намерение (MainActivity.this, HelloWorldActivity.class); // использование MainActivity.this вместо этого –

ответ

-2

Явное задание:

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

должны работать нормально при условии добавления импорта для HelloWorldActivity.class с полным именем пакета вашего модуля именно. ir.sibvas.testlibary1.HelloWorldActivity

6

Вы можете использовать Class.forName(), он работал для меня, когда мне нужно было начать работу, которая находится в другом модуле моего проекта.

Intent intent = null; 
    try { 
     intent = new Intent(this, 
      Class.forName("ir.sibvas.testlibary1.HelloWorldActivity")); 
     startActivity(intent); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
+0

Сохранено мое время ... –

Смежные вопросы