2 votes

Comment "fermer" Webview lorsque je retourne à mon activité ?

Après l'authentification à partir de mon application, une nouvelle fenêtre s'affiche qui redirige ensuite vers l'application. Ensuite, onNewIntent() est appelé dans mon activité. Mais lorsque je choisis de revenir à mon application, la page web de Twitter s'affiche toujours. La page Twitter avec une redirection vers l'application ne devrait pas être affichée. Comment puis-je fermer la page web de Twitter ?

0voto

XYZ Points 2550

J'appelle cette méthode depuis mon activité

public void askOAuth(Context context,Handler handler) {
    _msg = new Message();
    _msg.arg1 = AUTHORISE_TWITTER_APP;
    mContext=context;
    this.handler=handler;
    consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY,CONSUMER_SECRET);
    provider = new DefaultOAuthProvider(
        "http://twitter.com/oauth/request_token",
        "http://twitter.com/oauth/access_token",
        "http://twitter.com/oauth/authorize");//
    //provider.setOAuth10a(true);
    String authUrl = provider.retrieveRequestToken(consumer,CALLBACK_URL);
    mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
}

Cela ouvre une vue web (page Twitter qui redirige vers mon activité). Après cela, il appelle onNewIntent() la fonction de mon activité et de mon activité est affichée mais lorsque j'appuie sur le bouton retour, la page Twitter s'affiche à nouveau, et mon problème est de savoir comment fermer cette page Twitter.

0voto

Don Points 649

Ma suggestion est la suivante PAS lancer "authURL" dans une nouvelle fenêtre du navigateur web. Ce que je préfère faire personnellement, c'est de lancer une nouvelle activité qui contient une WebView et de passer l'URL à cette activité. De cette façon, il est plus facile pour vous de gérer la navigation dans votre application pendant le processus d'authentification Oauth. Donc au lieu de faire ça :

String authUrl = provider.retrieveRequestToken(consumer,CALLBACK_URL);
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));

Je ferais ça à la place :

Intent intent = new Intent(mContext, YourActivityWithAWebView.class);
intent.putExtra("AUTH_URL", authUrl);
startActivity(intent);

Ensuite, dans votre WebView, vous pouvez utiliser la méthode shouldOverrideUrlLoading() pour obtenir l'URL du VERIFIER et récupérer votre vérificateur Oauth.

J'espère que cela vous aidera !

-1voto

Jonathan Points 2310

La nouvelle fenêtre est-elle une activité ? Si oui, à partir de votre activité principale, appelez startActivityForResult() et implémenter les callbacks.

Lorsque votre callback est déclenché, vous pouvez recharger votre webview si nécessaire.

Vous pouvez également restructurer votre application de manière à ce que l'option onCreate() de votre activité principale est suffisamment intelligente pour ne pas afficher un ancien résultat dans la vue web.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X