Следующий код хорошо работает, когда у меня есть только один php
файл на моем сервере. В результате, когда сервер отвечает на Android, WebView
Виджет находится в устойчивом состоянии на экране. во-первых, посмотрите мой код, что он правильный:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//WebView Object
WebView browser;
browser = (WebView) findViewById(R.id.webView);
//Enable Javascript
browser.getSettings().setJavaScriptEnabled(true);
//Inject WebAppInterface methods into Web page by having Interface name 'Android'
browser.addJavascriptInterface(new WebAppInterface(this), "Android");
//Load URL inside WebView
String s = "http://127.0.0.1:8080/apps/webview.php";
browser.loadUrl(s);
}
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/**
* Show Toast Message
* @param toast
*/
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
}
Теперь, пожалуйста, смотрите следующее php
код, что это правильно:
<?php
echo "hello";
echo '<script> Android.showToast("Hello") </script>';
?>
Когда я запускаю приведенный выше код, WebView
Виджет находится в устойчивом состоянии на экране, и я могу видеть Hello
текст с использованием Toast
на экране.
Проблема начинается, когда я изменяюсь выше php
код следующим образом:
<?php
echo "hello";
header("Location:welcom.php");
?>
А потом я добавляю еще php
код, который его зовут welcome
и это так:
<?php
echo '<script> Android.showToast("Welcome") </script>';
?>
Теперь, когда я запускаю код на моем устройстве, сначала, когда он выполняет операции перенаправления на welcome.php
файл, вдруг WebView
виджет исчезает, и приложение браузера по умолчанию открывается на экране, в результате я не вижу echo '<script> Android.showToast("Welcome") </script>';
на экране моего устройства, а также на WebView
виджет.
Мне удалось решить мою проблему. Я просто внедряю веб-клиент и устанавливаю его перед loadUrl
,
browser.setWebViewClient(new WebViewClient());
Других решений пока нет …