У меня есть страница входа в мое приложение для Android.Я сохраняю токен доступа, полученный в ответе на запрос входа в систему, в общих настройках, а затем использую его для загрузки URL-адресов в веб-просмотре следующего действия.
Веб-представление загружается, как показано ниже, с клиентом Chrome для выбора фотографий.
private ValueCallback<Uri> mUploadMessage;
private Uri mCapturedImageURI = null;
private ValueCallback<Uri[]> mFilePathCallback;
private String mCameraPhotoPath;
private static final int INPUT_FILE_REQUEST_CODE = 1;
private static final int FILECHOOSER_RESULTCODE = 1;
WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_web_view);
mWebView= (WebView) findViewById(R.id.webView1);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setSaveFormData(true);
mWebView.getSettings().setAppCacheEnabled(true);
CookieSyncManager.createInstance(getContext());
CookieSyncManager.getInstance().startSync();
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
CookieManager.getInstance().setAcceptThirdPartyCookies(wv1, true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAllowContentAccess(true);
mWebView.getSettings().setUserAgentString("Android");
mWebView.getSettings().setDomStorageEnabled(true);
String access = Appcontrol.getInstance().loadPreferencesString("access_token");
final HashMap<String, String> map = new HashMap<String, String>();
map.put("Authorization", "Bearer " + access);
mWebView.loadUrl(constants.URL_GymAddWebview,map);
mWebView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// do your handling codes here, which url is the requested url
// probably you need to open that url rather than redirect:
if ( url.contains(".pdf")){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(url), "application/pdf");
try{
view.getContext().startActivity(intent);
} catch (ActivityNotFoundException e) {
//user does not have a pdf viewer installed
}
} else {
mWebView.loadUrl(url,map);
}
return false; // then it is not handled by default action
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.e("error",description);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) { //show progressbar here
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
//hide progressbar here
}
});
mWebView.setWebChromeClient(new ChromeClient());
}
// Приведенный выше код загружает веб-представление с помощью формы, которая собирает основные пользовательские данные и отправляется при нажатии кнопки.,Проблема, с которой я столкнулся, заключается в том, что при нажатии кнопки «Отправить» после ввода сведений в форму данные не добавляются, вместо этого в веб-представлении отображается страница входа, требующая проверки подлинности.Но я переопределил URL-адреса с помощью моего токена доступа.Кнопка отправки вызывает URL-адрес типа POST для сбора данных.Другие URL-адреса имеют тип GET, и они отлично работают при том же типе загрузки с токеном доступа.Те же URL-адреса работают без ошибок, если я запускаю их в обычном мобильном браузере (например, Chrome) или в веб-просмотре без какой-либо авторизации, как показано ниже.
mWebView.loadUrl(constants.URL_GymAddWebview);
// В приведенной выше строке загружается страница входа в систему, икак только я вхожу из веб-просмотра с интерфейсом laravel, я получаю форму добавления, и если я отправляю детали, она добавляется.Этого не произойдет, если я загружу webview с токеном доступа.Существует ли другой способ загрузки URL-адресов типа POST с токеном доступа в веб-представлении Android?