Я занимаюсь разработкой приложения для веб-просмотра Android с использованием java для входа в мою админ-панель WordPress (mysite.com/wp-admin), но не могу войти. Если я ввожу правильное имя пользователя и пароль, страница входа обновляетсяи если я ввожу неправильное имя пользователя / пароль, я получаю сообщение об ошибке с неверной информацией.Я прилагаю свой код ниже.
public class MainActivity extends AppCompatActivity {
private WebView webView;
private ProgressBar progressBar;
private SwipeRefreshLayout layoutRefresh;
private ValueCallback<Uri> mUploadMessage;
public ValueCallback<Uri[]> uploadMessage;
public static final int REQUEST_SELECT_FILE = 100;
private final static int FILECHOOSER_RESULTCODE = 1;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent)
{
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
{
if (requestCode == REQUEST_SELECT_FILE)
{
if (uploadMessage == null)
return;
uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent));
uploadMessage = null;
}
}
else if (requestCode == FILECHOOSER_RESULTCODE)
{
if (null == mUploadMessage)
return;
// Use MainActivity.RESULT_OK if you're implementing WebView inside Fragment
// Use RESULT_OK only if you're implementing WebView inside an Activity
Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
}
}
//WebActivity view Settings
private void webViewSettings() {
//webView.setWebChromeClient(new WebChromeClient());
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
//webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
webSettings.getAllowContentAccess();
webSettings.setAllowContentAccess(true);
webSettings.setAppCacheEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webSettings.setAllowContentAccess(true);
webSettings.setPluginState(WebSettings.PluginState.ON);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webSettings.setAllowFileAccess(true);
webSettings.setDatabaseEnabled(true);
if(Build.VERSION.SDK_INT >= 21){
webSettings.setMixedContentMode(0);
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}else if(Build.VERSION.SDK_INT >= 19){
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}else {
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
//webSettings.setGeolocationEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setSupportZoom(true);
webView.getSettings().setJavaScriptEnabled(true);
if (android.os.Build.VERSION.SDK_INT >= 21) {
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
} else {
CookieManager.getInstance().setAcceptCookie(true);
}
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
}
//Progressbar and network settings
private void progressBarSettings() {
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.swipeLayout,new ErrorFragment());
fragmentTransaction.commit();
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBar.setVisibility(VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBar.setVisibility(GONE);
}
});
}
//Alert Dialog on app exit
private void ExitDialog(){
final AlertDialog.Builder build = new AlertDialog.Builder(MainActivity.this);
build.setMessage("Really want to Exit?"); //Alert message on exit
build.setCancelable(false);
build.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
build.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
AlertDialog alertDialog = build.create();
alertDialog.show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Objects.requireNonNull(getSupportActionBar()).hide();
UrlActivity urlActivity = new UrlActivity();
SharedPreferences urlPreferences = getApplicationContext().getSharedPreferences("pref",MODE_PRIVATE);
final SharedPreferences.Editor editor = urlPreferences.edit();
Intent intent = getIntent();
if(intent.getStringExtra("url") != null){
editor.putString("urlData",intent.getStringExtra("url"));
editor.commit();
}
String getUrl = urlPreferences.getString("urlData",urlActivity.home);
editor.clear().commit();
layoutRefresh = this.findViewById(R.id.refresh);
CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().startSync();
Toast.makeText(MainActivity.this, "Under Development by Sajeeb",Toast.LENGTH_LONG).show();
layoutRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if (webView.getUrl() != null) {
webView.reload();
}
layoutRefresh.setRefreshing(false);
}
});
webView = findViewById(R.id.webview);
progressBar = findViewById(R.id.loading);
webView.loadUrl(getUrl);
webView.setWebChromeClient(new WebChromeClient()
{
// For 3.0+ Devices (Start)
// onActivityResult attached before constructor
protected void openFileChooser(ValueCallback uploadMsg, String acceptType)
{
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
startActivityForResult(Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE);
}
// For Lollipop 5.0+ Devices
public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
{
if (uploadMessage != null) {
uploadMessage.onReceiveValue(null);
uploadMessage = null;
}
uploadMessage = filePathCallback;
Intent intent = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
intent = fileChooserParams.createIntent();
}
try
{
startActivityForResult(intent, REQUEST_SELECT_FILE);
} catch (ActivityNotFoundException e)
{
uploadMessage = null;
//Toast.makeText(getActivity().getApplicationContext(), "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
return false;
}
return true;
}
//For Android 4.1 only
protected void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture)
{
mUploadMessage = uploadMsg;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent, "File Browser"), FILECHOOSER_RESULTCODE);
}
protected void openFileChooser(ValueCallback<Uri> uploadMsg)
{
mUploadMessage = uploadMsg;
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*");
startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
}
});
webViewSettings();
progressBarSettings();
}
@Override
protected void onResume() {
super.onResume();
CookieSyncManager.getInstance().stopSync();
}
@Override
protected void onPause() {
super.onPause();
CookieSyncManager.getInstance().sync();
}
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
ExitDialog();
}
}
}