Como retomar o aplicativo Android sem perder a pilha de atividades (ou o estado do aplicativo) com links diretos?
eu tenho isto<intent-filter>
que toda vez que um link é pressionado, ele abre meu aplicativo, mas o problema é que ele abre umNovo instância do meu aplicativo.Existe alguma maneira de acionar onResume () e apenas retomar meu aplicativo sem perder o estado ou a pilha de atividades?
Este é o filtro de intenção:
<intent-filter>
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="example.com" />
<data android:pathPattern="/.*" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
AtualizarGraças ao usuário David Wasser, resposta abaixo, encontrei a resposta:
Então, criei o EntryActivity, que é lançado no topo do aplicativo gmail / caixa de entrada:
public class EntryActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.entry_activity);
Uri uriParams = getIntent().getData();
Log.e("EntryActivity", uriParams.getHost() );
Log.e("EntryActivity", uriParams.getQueryParameter("uid") + " " + uriParams.getQueryParameter("type") + " " + uriParams.getQueryParameter("token") );
Intent startCategory = new Intent(this, GotEmailActivity.class);
startCategory.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startCategory);
this.finish();
}
}
Em seguida, quando meu aplicativo é aberto em GotEmailActivity, envio um email para o usuário com o link para abrir o aplicativo e GotEmailActivity tem o atributoandroid:launchMode="singleTop"
no AndroidManifest, portanto, apenas 1 instância é aberta:
<!--
Important: notice android:launchMode="singleTop"
which seeks if an instance of this activity is already opened and
resumes already opened instance, if not it opens new instance.
-->
<activity
android:name=".presenters.register.email.GotEmailActivity"
android:label="@string/title_activity_got_email"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
Agora, o que está acontecendo é que o EntryActivity é aberto no topo do aplicativo Gmail, mas é fechado imediatamente, mas inicia o GotEmailActivity, que já está aberto, para que o atributo launchMode Singletop impeça uma nova instância dessa atividade.