Ich habe eine aar erstellt und ich habe es meinem Projekt als Modul hinzugefügt. In diesem Modul habe ich eine HelloWorldActivity, die ich ausführen möchte.So starten Sie eine Aktivität in einem anderen Modul explizit
mein Modul Manifest sieht so aus.
<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>
Jetzt kann ich diese Tätigkeit von meinem Projekt starten mit diesem Code
Intent intent = new Intent("ir.sibvas.testlibary1.HelloWorldActivity");
startActivity(intent);
aber wie Sie diesen Code sehen können, ist implizit und Problem mit impliziter Berufung ist, dass, wenn ich Sich mit diesem Modul in mehr als Eine App, die beide auf dem Benutzergerät installiert sind, zeigt dem Benutzer einen App-Auswahldialog. Also wie kann dieser Aufruf explizit gemacht werden, verhindert Benutzer die App wechseln?
dieser Code wird nicht ausgeführt, da HelloWorldActivity als Aufruf Aktivität
Intent intent = new Intent(this, HelloWorldActivity.class);
startActivity(intent);
nicht im selben Paket ist möchte ich wirklich nicht mein Modul für jedes Projekt ändern, die es verwendet.
Content Provider könnte Ihnen helfen. –
Intent intent = neue Absicht (MainActivity.this, HelloWorldActivity.class); // stattdessen MainActivity.this verwenden –