xiaoyan_12 2013-09-12 08:53 采纳率: 25%
浏览 1682

在shouldOverrideUrlLoading中加载intent

我想在 shouldOverrideUrlLoading 中加载一个 intent。
VariablesStorage.class

public class VariablesStorage
{
private static VariablesStorage instance;
public static  Context webViewContext;
public  WebView webView;

        public static void initInstance()
    {
        if (instance == null)
        {
            // Create the instance
            instance = new VariablesStorage();
        }
    }
    public static VariablesStorage getInstance()
    {
        // Return the instance
        return instance;
    }
    private VariablesStorage()
    {
    }
public void loadWebView() {
        webView.getSettings().setJavaScriptEnabled(true);
 if (isOnline())
        {
            webView.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {

                    if (url.startsWith("inapp://")) {
                         Intent intent = new Intent(this,profilepictureview.class);
                         intent.putExtra("img",Uri.parse(url).getHost().toString());
                         startActivity(intent);

                        }else
                        {
                            view.getContext().startActivity(
                             new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                        }                       
                    return true;
                }
                @Override
                public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) 
                    {
                    }
                @Override
                public void onPageFinished(WebView view, String url) {
                    if(mProgress.isShowing()) {
                        mProgress.dismiss();
                    }
                }
            });
            webView.loadUrl(Url);
        }else
        {
            webView.loadData(customHtml, "text/html;charset=utf-8", "UTF-8");
        }
    }
}

然后在 webview activity 中调用 VariablesStorage.getInstance().loadWebView();
WebViewActivity.class

public class WebViewActivity extends Activity {

    SharedPreferences pref;
    TextView textView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webviewtab);
 VariablesStorage.getInstance().webViewContext = this;
        VariablesStorage.getInstance().webView = (WebView) findViewById(R.id.webView);
            VariablesStorage.getInstance().loadWebView();
}

当我在 shouldOverrideUrlLoading 里面添加代码时:

Intent intent = new Intent(this,profilepictureview.class);
 intent.putExtra("img",Uri.parse(url).getHost().toString());
 startActivity(intent);

出现错误:

The constructor Intent(new WebViewClient(){}, Class<profilepictureview>) is undefined

如何实现这个功能呢?

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-02-10 10:57
    关注

    该回答引用ChatGPT

    在这种情况下,错误发生是因为当前上下文不是 Activity 而是一个匿名内部类(即 WebViewClient)。因此,您不能使用“this”来构造 Intent,您应该使用 webViewContext 上下文。


    更改代码:

    Intent intent = new Intent(VariablesStorage.getInstance().webViewContext, profilepictureview.class);
    intent.putExtra("img",Uri.parse(url).getHost().toString());
    VariablesStorage.getInstance().webViewContext.startActivity(intent);
    

    这样就可以在 shouldOverrideUrlLoading 中加载 Intent 了。

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?