2015-09-25 60 views
0

我嘗試通過WebView訪問我的網站,但在向用戶顯示WebView之前,他們必須輸入用戶名和密碼,之後他們可以看到他們的帳戶信息顯示板進入WebView。 問題是,實際上我可以保留我的auth_token並將其存儲到SharedPreferences中,但在如何告訴我的webview該用戶已經完成登錄並且已經有auth_token之後? 我會允許我的用戶在我的android應用程序中使用該網站。 這是代碼: public class Login_Page extends Activity活動{0}私人SharedPreferences mPreferences;帶令牌的Android WebView無法訪問帳戶

String token=""; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.login_page); 
    mPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE);} 

public void LaunchWebView(View view) { 
    WebView myWebView = (WebView) findViewById(R.id.myWebView); 
    SharedPreferences prefs =PreferenceManager.getDefaultSharedPreferences(this); 
    String token2= mPreferences.getString("auth_token",""); 

    HashMap<String, String> map = new HashMap<String, String>(); 

    String sessionCookie = "staging=" + token; 
    map.put("auth_token",token2); 

    myWebView.loadUrl("url", map); 
} 
} 

回答

0

我解決了這個問題,我重寫代碼,在這裏我修改:

public class Login_Page extends Activity{ 
private SharedPreferences mPreferences; 

String token=""; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.login_page); 
    mPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE); 

} 

@SuppressLint("NewApi") 
public void LaunchWebView(View view) { 

    WebView myWebView = (WebView) findViewById(R.id.myWebView); 
    myWebView.getSettings().setJavaScriptEnabled(true); 
    myWebView.getSettings().setSaveFormData(false); 

    CookieSyncManager.createInstance(this); 
    CookieSyncManager.getInstance().startSync(); 
    CookieManager cookieManager = CookieManager.getInstance(); 
    cookieManager.setAcceptCookie(true); 
    CookieManager.getInstance().setAcceptThirdPartyCookies(myWebView, true); 

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    String token2= mPreferences.getString("auth_token",""); 

    HashMap<String, String> map = new HashMap<String, String>(); 
    map.put("x-auth-token", token2); 
    myWebView.getSettings().setAppCacheEnabled(true); 
    myWebView.setWebViewClient(new WebViewClient() { 
     public boolean shouldOverrideUrlLoading(WebView view,String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    }); 
    myWebView.loadUrl("https://www.photospotland.com/spots/where", map); 
} 
} 

我希望這可以幫助別人。 謝謝。

+0

setAcceptThirdPartyCookies方法支持min 21 api級別 – DJtiwari