Android 我想开发浏览器应用程序,但出现错误
我是Android新手,我想开发一个浏览器应用程序,现在我正在尝试开发它,在这方面我遇到了错误。我还尝试了另一种方法,就是询问你必须在哪个浏览器上像那样打开,但对我来说,我只想在我的应用程序中打开 WebviewActivity.javaAndroid 我想开发浏览器应用程序,但出现错误,android,android-asynctask,android-webview,Android,Android Asynctask,Android Webview,我是Android新手,我想开发一个浏览器应用程序,现在我正在尝试开发它,在这方面我遇到了错误。我还尝试了另一种方法,就是询问你必须在哪个浏览器上像那样打开,但对我来说,我只想在我的应用程序中打开 WebviewActivity.java package com.example.admin.fristapp; import android.app.Activity; import android.os.AsyncTask; import android.support.v7.app.AppCo
package com.example.admin.fristapp;
import android.app.Activity;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebviewActivity extends Activity {
WebView webview1;
// String url = "http://www.google.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
webview1 = (WebView) findViewById(R.id.webview1);
// webview1.loadUrl(url);
//MyBrowser my ;
new Background().execute();
}
public class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
public class Background extends AsyncTask<String,String,String>
{
@Override
protected void onPostExecute(String s)
{
super.onPostExecute(s);
}
@Override
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected String doInBackground(String... strings)
{
search();
return null;
}
}
public void search()
{
webview1.setWebViewClient(new WebviewActivity.MyBrowser());
String url = "http://www.google.com";
webview1.getSettings().setJavaScriptEnabled(true);
webview1.loadUrl(url);
}
}
后编辑
您正在
doInBackground()
方法的WebView
中加载url。
您应该在UI线程上执行此操作
loadUrl()
已在异步执行所有操作。因此,无需使用异步任务
。将代码移到onCreate()
方法中
如果要显示装载指示器,需要按如下方式使用:
WebView webview = new WebView(MainActivity.this);
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// Do your code when page finished
}
});
webview.loadUrl(url);
您好,运行webview UI不需要后台线程。它将在UI threadno中执行之后,我希望包含处理栏,这就是为什么我要说你应该在PageFinished上被覆盖以跟踪你的进度。OK尝试过了,但它没有在我的应用程序中打开,它会询问你想在哪个浏览器上打开它,如果它是新项目,我建议您使用添加到清单文件中的
权限?是的,我也授予了该权限。这是错误吗?发布你更新的有问题的代码,这样我就可以更正它了。是的,我现在发布了movewebview.loadUrl(url)代码>在webview.setWebViewClient()之后
import android.app.Activity;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebviewActivity extends Activity {
WebView webview;
String url = "http://www.google.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
webview =(WebView )findViewById(R.id.webview1);
//WebView(WebviewActivity.this);
webview.loadUrl(url);
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// Do your code when page finished
}
});
WebView webview = new WebView(MainActivity.this);
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// Do your code when page finished
}
});
webview.loadUrl(url);