Facebook connect / webview android ne fonctionne pas
donnemoifaim
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
donnemoifaim Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
donnemoifaim Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonsoir !
J'ai créé l'application DonneMoiFaim sur android hier, j'ai utilisé une webview puisque le site est déjà adapté sur mobile. :)
La navigation était parfaite, jusqu'à ce que j'essais de me connecter sur Facebook via le connect button intégré sur mon site Smiley decu
La connexion est bien apparue me demandant mes identifiants, mais une fois la connexion validée, au lieu de retourner sur la view de l'app, je tombe sur une page blanche..
Alors oui j'ai fais mes recherches, mais je n'arrive pas implémenter les réponses qui sont parfois très hasardeuses ou bien qui n'expliquent rien (je suis NOVICE en android, je l'ai bouquiné hier pour la première fois de ma vie ! J'ai besoin de comprendre ce que je fais un minimum pour bien avancer ^^)
Voici mon code actuel :
J'espère que quelqu'un est calé coté Android et passera par là :')
Bonne soirée et merci à tous :)) !!
J'ai créé l'application DonneMoiFaim sur android hier, j'ai utilisé une webview puisque le site est déjà adapté sur mobile. :)
La navigation était parfaite, jusqu'à ce que j'essais de me connecter sur Facebook via le connect button intégré sur mon site Smiley decu
La connexion est bien apparue me demandant mes identifiants, mais une fois la connexion validée, au lieu de retourner sur la view de l'app, je tombe sur une page blanche..
Alors oui j'ai fais mes recherches, mais je n'arrive pas implémenter les réponses qui sont parfois très hasardeuses ou bien qui n'expliquent rien (je suis NOVICE en android, je l'ai bouquiné hier pour la première fois de ma vie ! J'ai besoin de comprendre ce que je fais un minimum pour bien avancer ^^)
Voici mon code actuel :
package fr.donnemoifaim.donnemoifaim;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
android.webkit.WebView myWebView = (android.webkit.WebView) findViewById(R.id.webview);
getSupportActionBar().hide();
myWebView.setWebViewClient(new android.webkit.WebViewClient());
android.webkit.WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(true);
myWebView.loadUrl("https://donnemoifaim.fr");
// Autoriser ou non la géocalisation
myWebView.setWebChromeClient(new android.webkit.WebChromeClient() {
public void onGeolocationPermissionsShowPrompt(String origin, android.webkit.GeolocationPermissions.Callback callback) {
// callback.invoke(String origin, boolean allow, boolean remember);
callback.invoke(origin, true, false);
}
});
myWebView.getSettings().setAppCacheEnabled(true);
myWebView.getSettings().setDatabaseEnabled(true);
myWebView.getSettings().setDomStorageEnabled(true);
return true;
}
}
J'espère que quelqu'un est calé coté Android et passera par là :')
Bonne soirée et merci à tous :)) !!
A voir également:
- Facebook connect / webview android ne fonctionne pas
- Android recovery - Guide
- Ne pas deranger android - Guide
- Appareil connecté facebook - Guide
- Story facebook comment ça marche - Guide
- Facebook se connecter à un autre compte - Guide
6 réponses
Hello,
Je n'aime pas trop utiliser les webviews dans mes applis. Après quelques recherches (voir ici par exemble), il semblerait qu'il faille surchargé la méthode
En passant, l'initialisation de ta webview doit se faire dans le
@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, provide for a delay...
Je n'aime pas trop utiliser les webviews dans mes applis. Après quelques recherches (voir ici par exemble), il semblerait qu'il faille surchargé la méthode
onCreateWindowsdu
WebChromeClient. Un exemple de code ici: https://pastebin.com/KdzfhqDJ
En passant, l'initialisation de ta webview doit se faire dans le
onCreateet non dans le
onCreateOptionsMenu.
@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, provide for a delay...
J'ai pas mal d'erreur , j'ai simplement copié-collé pour le tester. J'ai 4 erreurs :
--> cannot resolve mainWebView
--> cannot resolve progressBar
--> cannot resolve webview_frame
--> cannot resolve example_main
Me manque t'il des SDK nécessaire ? Le code est t'il faux, obselete ? Me manque t'il des déclarations (que ce soit dans le layout, le manifeste ou autre ? )
Voici le code complet de l'url que tu m'as fourni :
Merci pour votre attention à tous !!
mainWebView = (WebView) findViewById(R.id.mainWebView);
--> cannot resolve mainWebView
mProgress = (ProgressBar) findViewById(R.id.progressBar);
--> cannot resolve progressBar
mContainer = (FrameLayout) findViewById(R.id.webview_frame);
--> cannot resolve webview_frame
getMenuInflater().inflate(R.menu.example_main, menu);
--> cannot resolve example_main
Me manque t'il des SDK nécessaire ? Le code est t'il faux, obselete ? Me manque t'il des déclarations (que ce soit dans le layout, le manifeste ou autre ? )
Voici le code complet de l'url que tu m'as fourni :
package fr.donnemoifaim.donnemoifaim;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Bundle;
import android.app.Activity;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.*;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
public class ExampleMainActivity extends Activity {
protected WebView mainWebView;
private ProgressBar mProgress;
private Context mContext;
private WebView mWebview;
private WebView mWebviewPop;
private FrameLayout mContainer;
private String url = "http://stage.example.com";
private String target_url_prefix = "stage.example.com";
public void onBackPressed(){
if (mainWebView.isFocused() && mainWebView.canGoBack()) {
mainWebView.goBack();
}
else {
super.onBackPressed();
finish();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Get main webview
mainWebView = (WebView) findViewById(R.id.mainWebView);
//Progress Bar
mProgress = (ProgressBar) findViewById(R.id.progressBar);
//Cookie manager for the webview
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
//Get outer container
mContainer = (FrameLayout) findViewById(R.id.webview_frame);
//Settings
WebSettings webSettings = mainWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(true);
mainWebView.setWebViewClient(new MyCustomWebViewClient());
mainWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
mainWebView.setWebChromeClient(new MyCustomChromeClient());
mainWebView.loadUrl("http://stage.example.com/home");
mContext=this.getApplicationContext();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.example_main, menu);
return true;
}
private class MyCustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String host = Uri.parse(url).getHost();
//Log.d("shouldOverrideUrlLoading", url);
if (host.equals(target_url_prefix))
{
// This is my web site, so do not override; let my WebView load
// the page
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
return false;
}
if(host.equals("m.facebook.com") || host.equals("www.facebook.com"))
{
return false;
}
// Otherwise, the link is not for a page on my site, so launch
// another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error) {
Log.d("onReceivedSslError", "onReceivedSslError");
//super.onReceivedSslError(view, handler, error);
}
}
private class MyCustomChromeClient extends WebChromeClient
{
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
mWebviewPop = new WebView(mContext);
mWebviewPop.setVerticalScrollBarEnabled(false);
mWebviewPop.setHorizontalScrollBarEnabled(false);
mWebviewPop.setWebViewClient(new MyCustomWebViewClient());
mWebviewPop.getSettings().setJavaScriptEnabled(true);
mWebviewPop.getSettings().setSavePassword(false);
mWebviewPop.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
mContainer.addView(mWebviewPop);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(mWebviewPop);
resultMsg.sendToTarget();
return true;
}
@Override
public void onCloseWindow(WebView window) {
Log.d("onCloseWindow", "called");
}
}
}
Merci pour votre attention à tous !!
Il faut l'adapter à ton code ;)
La méthode
Il faut également faire du ménage: si tu n'as pas de ProgressBar, de menu,...tu supprimes.
La méthode
findViewByIDcherche, comme son nom l'indique, une correspondance entre un ID et une vue. Par exemple, dans ton code, ta webView est identifiée avec l'ID
R.id.webview.
Il faut également faire du ménage: si tu n'as pas de ProgressBar, de menu,...tu supprimes.
Haha oui en effet ç'est tout bette, j'étais sur d'avoir fait quelque chose de mauvais que je n'ai pas pensé à supprimer les lignes :p !
Bon du coup aucune erreur mais quand je lance l'appli : l'application 'donnemoifaim' s'est arrête..
Alors là trou noir..
On récapitule :
------------------------
MainActivity.java :
---------------------------
AndroidActivity.xml :
------------------------------
menu_main.xml :
values->strings.xml
----------------------------
values-> style.xml
Je pense qui y a des choses inutiles/flous, étant un parfait novice j'ai vraiment du mal à les identifier :S
Bon du coup aucune erreur mais quand je lance l'appli : l'application 'donnemoifaim' s'est arrête..
Alors là trou noir..
On récapitule :
------------------------
MainActivity.java :
package fr.donnemoifaim.donnemoifaim;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Bundle;
import android.app.Activity;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.*;
import android.webkit.WebChromeClient;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
private WebView mainWebView;
private ProgressBar mProgress;
private Context mContext;
private WebView mWebview;
private WebView mWebviewPop;
private FrameLayout mContainer;
private String url = "https://donnemoifaim.fr";
private String target_url_prefix = "donnemoifaim.fr";
public void onBackPressed(){
if (mainWebView.isFocused() && mainWebView.canGoBack()) {
mainWebView.goBack();
}
else {
super.onBackPressed();
finish();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Cookie manager for the webview
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
//Get outer container
mContainer = (FrameLayout) findViewById(R.id.webview_frame);
//Settings
WebSettings webSettings = mainWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(true);
mainWebView.setWebViewClient(new MyCustomWebViewClient());
mainWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
mainWebView.setWebChromeClient(new MyCustomChromeClient());
mainWebView.loadUrl("https://donnemoifaim.fr");
mContext=this.getApplicationContext();
}
private class MyCustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String host = Uri.parse(url).getHost();
//Log.d("shouldOverrideUrlLoading", url);
if (host.equals(target_url_prefix))
{
// This is my web site, so do not override; let my WebView load
// the page
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
return false;
}
if(host.equals("m.facebook.com") || host.equals("www.facebook.com"))
{
return false;
}
// Otherwise, the link is not for a page on my site, so launch
// another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error) {
Log.d("onReceivedSslError", "onReceivedSslError");
//super.onReceivedSslError(view, handler, error);
}
}
private class MyCustomChromeClient extends WebChromeClient
{
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
mWebviewPop = new WebView(mContext);
mWebviewPop.setVerticalScrollBarEnabled(false);
mWebviewPop.setHorizontalScrollBarEnabled(false);
mWebviewPop.setWebViewClient(new MyCustomWebViewClient());
mWebviewPop.getSettings().setJavaScriptEnabled(true);
mWebviewPop.getSettings().setSavePassword(false);
mWebviewPop.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
mContainer.addView(mWebviewPop);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(mWebviewPop);
resultMsg.sendToTarget();
return true;
}
@Override
public void onCloseWindow(WebView window) {
Log.d("onCloseWindow", "called");
}
}
}
---------------------------
AndroidActivity.xml :
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview_frame"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
------------------------------
menu_main.xml :
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context="MainActivity">
</menu>
values->strings.xml
<code><resources></code>
<string name="app_name">DonneMoiFaim</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
</resources>
----------------------------
values-> style.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
</resources>
Je pense qui y a des choses inutiles/flous, étant un parfait novice j'ai vraiment du mal à les identifier :S
Quel est le message d'erreur dans les logs?
Je vois ceci:
Or, tu dis avoir nommé ton fichier
Sachant qu'il n'est pas possible de mettre des majuscules dans les noms des ressources, il faut donc renommer ton fichier xml en activity_main.xml
Vu que tu n'utilises pas le menu, tu peux supprimer menu_main.xml.
Ensuite, comme je te l'ai dit, la méthode findViewByID() recherche la "vue" ou composant graphique ayant l'ID passé en paramètre. Dans ton xml, tu as une seule WebView mais tu ne la récupères pas dans ton onCreate()! Je parle de l'objet mainWebview qui n'est pas initialisé.
Et il te manque dans ton layout un container nommé R.id.webview_frame. Mais à voir si tu en as vraiment besoin dans ton cas...
@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, provide for a delay...
Je vois ceci:
setContentView(R.layout.activity_main);
Or, tu dis avoir nommé ton fichier
AndroidActivity.xml.
Sachant qu'il n'est pas possible de mettre des majuscules dans les noms des ressources, il faut donc renommer ton fichier xml en activity_main.xml
Vu que tu n'utilises pas le menu, tu peux supprimer menu_main.xml.
Ensuite, comme je te l'ai dit, la méthode findViewByID() recherche la "vue" ou composant graphique ayant l'ID passé en paramètre. Dans ton xml, tu as une seule WebView mais tu ne la récupères pas dans ton onCreate()! Je parle de l'objet mainWebview qui n'est pas initialisé.
Et il te manque dans ton layout un container nommé R.id.webview_frame. Mais à voir si tu en as vraiment besoin dans ton cas...
@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
The urgent is done, the impossible is underway. For miracles, provide for a delay...
Note: pour te simplifier la vie avec les findViewByID, je te conseille de regarder la lib ButterKnife
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ok, j'ai suivi tes multiples conseils, j'ai donc initié la webview (ce qui m'étonne, c'est que dans le lien exemple que tu m'as donné, ça n'y était pas ! )
Petit beug : quand on clique sur facebook log : l'application donnemoifaim s'arrete
Donc l'application se lance bien, pas de problème aucune erreur niveau code, idem pour les logs mon activity_mail.xml est devenu :
Pour le fichier .java :
Il doit manquer un tout petit rien du tout, si l'appli s'arrête, c'est que la méthode à bien été lancée, je fais mes recherches et bidouille un peu à droite à gauche, tiens moi au courant si tu trouves l'erreur potentielle :) !
les logs :
Installing fr.donnemoifaim.donnemoifaim
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/fr.donnemoifaim.donnemoifaim"
pkg: /data/local/tmp/fr.donnemoifaim.donnemoifaim
Success
Launching application: fr.donnemoifaim.donnemoifaim/fr.donnemoifaim.donnemoifaim.MainActivity.
DEVICE SHELL COMMAND: am start -n "fr.donnemoifaim.donnemoifaim/fr.donnemoifaim.donnemoifaim.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=fr.donnemoifaim.donnemoifaim/.MainActivity }
Petit beug : quand on clique sur facebook log : l'application donnemoifaim s'arrete
Donc l'application se lance bien, pas de problème aucune erreur niveau code, idem pour les logs mon activity_mail.xml est devenu :
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0099cc"
tools:context=".MyActivity"
android:id="@+id/webview_frame">
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</FrameLayout>
Pour le fichier .java :
package fr.donnemoifaim.donnemoifaim;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Bundle;
import android.app.Activity;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.*;
import android.webkit.WebChromeClient;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
private WebView mainWebView;
private ProgressBar mProgress;
private Context mContext;
private WebView mWebview;
private WebView mWebviewPop;
private FrameLayout mContainer;
private String url = "https://donnemoifaim.fr";
private String target_url_prefix = "donnemoifaim.fr";
public void onBackPressed(){
if (mainWebView.isFocused() && mainWebView.canGoBack()) {
mainWebView.goBack();
}
else {
super.onBackPressed();
finish();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Cookie manager for the webview
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
WebView mainWebView = new WebView(this);
setContentView(mainWebView);
//Get outer container
mContainer = (FrameLayout) findViewById(R.id.webview_frame);
//Settings
WebSettings webSettings = mainWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setSupportMultipleWindows(true);
mainWebView.setWebViewClient(new MyCustomWebViewClient());
mainWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
mainWebView.setWebChromeClient(new MyCustomChromeClient());
mainWebView.loadUrl("https://donnemoifaim.fr");
mContext=this.getApplicationContext();
}
private class MyCustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
String host = Uri.parse(url).getHost();
//Log.d("shouldOverrideUrlLoading", url);
if (host.equals(target_url_prefix))
{
// This is my web site, so do not override; let my WebView load
// the page
if(mWebviewPop!=null)
{
mWebviewPop.setVisibility(View.GONE);
mContainer.removeView(mWebviewPop);
mWebviewPop=null;
}
return false;
}
if(host.equals("m.facebook.com") || host.equals("www.facebook.com"))
{
return false;
}
// Otherwise, the link is not for a page on my site, so launch
// another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error) {
Log.d("onReceivedSslError", "onReceivedSslError");
//super.onReceivedSslError(view, handler, error);
}
}
private class MyCustomChromeClient extends WebChromeClient
{
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
mWebviewPop = new WebView(mContext);
mWebviewPop.setVerticalScrollBarEnabled(false);
mWebviewPop.setHorizontalScrollBarEnabled(false);
mWebviewPop.setWebViewClient(new MyCustomWebViewClient());
mWebviewPop.getSettings().setJavaScriptEnabled(true);
mWebviewPop.getSettings().setSavePassword(false);
mWebviewPop.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
mContainer.addView(mWebviewPop);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(mWebviewPop);
resultMsg.sendToTarget();
return true;
}
@Override
public void onCloseWindow(WebView window) {
Log.d("onCloseWindow", "called");
}
}
}
Il doit manquer un tout petit rien du tout, si l'appli s'arrête, c'est que la méthode à bien été lancée, je fais mes recherches et bidouille un peu à droite à gauche, tiens moi au courant si tu trouves l'erreur potentielle :) !
les logs :
Installing fr.donnemoifaim.donnemoifaim
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/fr.donnemoifaim.donnemoifaim"
pkg: /data/local/tmp/fr.donnemoifaim.donnemoifaim
Success
Launching application: fr.donnemoifaim.donnemoifaim/fr.donnemoifaim.donnemoifaim.MainActivity.
DEVICE SHELL COMMAND: am start -n "fr.donnemoifaim.donnemoifaim/fr.donnemoifaim.donnemoifaim.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=fr.donnemoifaim.donnemoifaim/.MainActivity }
Bon j'ai trouvé le problème, j'espère pouvoir aider d'autre :
Le code est bon, le truc c'est qu'il faut ajouter après la déclaration de la webview et avant le chargement de la page :
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
CookieManager.getInstance().setAcceptThirdPartyCookies(mainWebView, true);
}
Cela permet d'autoriser les cookies Facebook ! Je vous dis pas comment j'en est chier, surtout que c'est un beug que meme facebook connaissait mais n'a pas pris le temps de résoudre :
https://developers.facebook.com/docs/facebook-login/android/v2.3
Voici la source de la solution qui m'a beaucoup aidé :
https://stackoverflow.com/questions/28197150/checking-facebook-login-state-in-a-webview-always-returns-unknown
Le code est bon, le truc c'est qu'il faut ajouter après la déclaration de la webview et avant le chargement de la page :
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
CookieManager.getInstance().setAcceptThirdPartyCookies(mainWebView, true);
}
Cela permet d'autoriser les cookies Facebook ! Je vous dis pas comment j'en est chier, surtout que c'est un beug que meme facebook connaissait mais n'a pas pris le temps de résoudre :
https://developers.facebook.com/docs/facebook-login/android/v2.3
Voici la source de la solution qui m'a beaucoup aidé :
https://stackoverflow.com/questions/28197150/checking-facebook-login-state-in-a-webview-always-returns-unknown
- pas besoin de refaire tout le site, surtout que sur Android je suis debutant,
- pas besoin non plus de faire des mises a jour de l appli pour tout et n imp, les mises a jour sont automatiques, on se concentre uniquement sur son site web
- point non essentiel mais non négligeable , le poid de ce genre d appli ne dépasse souvent pas les 2mo, ce qui est un plus lors du téléchargement
En tout cas merci encore je continu mes recherches en prenant en compte les tiennes :)