Je la situation suivante: lorsque je lance mon application le scénario suivant se déroule:activité poignée Android lancement
- Je commence l'activité
StartActivity
- Si je ne l'ai fait un login (je le sais basé Si vous avez déjà fait un login, je commence quand même
LoginActivity
, mais j'utilise des données (cryptées) sauvegardées dans les préférences partagées sans demander de nouvelles informations d'identification à l'utilisateur. - Lorsque la connexion à réussir je lance l'activité
StartActivity
Maintenant, dans mon fichier manifest j'ai l'IntentFilter suivante pour MainActivity
:
<intent-filter android:label="Conio" >
<action android:name="android.intent.action.VIEW" />
<data android:scheme="myprotocol" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
Et tout fonctionne bien avec un grand « mais »: tout fonctionne uniquement lorsque mon application est déjà ouverte: mon application est mise en avant, la méthode onCreate est appelée et avec getIntent.getData() je peux accéder à l'URI qui a démarré mon application.
LE GROS PROBLEME:
CE QUE JE BESOIN EST:
- Lorsque mon application n'est pas déjà commencé tout devrait commencer à partir
StartActivity
selon l'explication précédente- Lorsque mon application est l'exécution du comportement doit être celle en cours
Pour ce faire, je fait la tentative suivante: J'ai postulé que IntentFilter à une nouvelle Activity
, dans cette méthode onCreate d'activité que je mets le code suivant
Intent intent = getPackageManager().getLaunchIntentForPackage("my.package.name");
if (intent != null) {
intent.setData(intent.getData());
intent.putExtra("test", "test");
startActivity(intent);
finish();
}
mais ce qui se passe ici est que lorsque l'application est ne fonctionne pas l'application démarre correctement à partir StartActivity, mais si si l'application est déjà en cours d'exécution, MainActivity est amené à l'avant, mais je ne peux pas accéder aux extras intention, en fait ce code ne fonctionne pas
@Override
protected void onResume() {
super.onResume();
//this code returns null
String test=getIntent.getStringExtra("test");
}
Comment puis-je faire tout cela pour travailler?