java - 找不到符号方法startActivity(android.content.Intent)

标签 java android start-activity

我是制作 Android 应用程序的初学者。我制作了一个显示我的网页的 WebView 。我的网页包含我希望在邮件和拨号等外部应用程序中打开的联系人按钮。因此我得到了一些帮助并得到了这样的代码

import android.app.Activity;
import android.content.Intent;
import android.net.MailTo;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class ourViewClient extends WebViewClient {

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    try{
        System.out.println("url called:::" + url);
        if (url.startsWith("tel:")) {
            Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
            startActivity(intent);
        }  else if (url.startsWith("http:")
                || url.startsWith("https:")) {

            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);

        }  else if (url.startsWith("mailto:")) {

            MailTo mt=MailTo.parse(url);

            send_email(mt.getTo());

        }
        else {
            return false;
        }
    }catch(Exception e){
        e.printStackTrace();
    }

    return true;
}



public void send_email(String email_add) {
    System.out.println("Email address::::" + email_add);

    final Intent emailIntent = new Intent(
            android.content.Intent.ACTION_SEND);
    emailIntent.setType("plain/text");
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
            new String[] { email_add });
    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "");
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "");
    startActivity(
            Intent.createChooser(emailIntent, "Send mail..."));

}

}

但是后来我收到了这个错误“找不到符号方法startActivity(android.content.Intent)”startactivity 有什么问题吗?

最佳答案

WebViewClient 没有上下文,因此您无法直接启动 Activity

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);

或者,使用其构造函数将上下文传递给 webViewClient

public class ourViewClient extends WebViewClient {

Context context;


public ourViewClient (Context c){
    this.context = c;
}


@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    try{
        System.out.println("url called:::" + url);
        if (url.startsWith("tel:")) {
            Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
            context.startActivity(intent);
        }  else if (url.startsWith("http:")
                || url.startsWith("https:")) {

            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            context.startActivity(intent);

        }  else if (url.startsWith("mailto:")) {

            MailTo mt=MailTo.parse(url);

            send_email(mt.getTo());

        }
        else {
            return false;
        }
    }catch(Exception e){
        e.printStackTrace();
    }


    return true;
}

关于java - 找不到符号方法startActivity(android.content.Intent),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23872245/

相关文章:

java - 将比例类型更改为 fitCenter 以获得应用程序样式背景图像

android - 未检测到文档 (Android) 的语法约束(DTD 或 XML 模式)

android - Android 谷歌地图中未启用位置按钮

android - ACTION_INSTALL_PACKAGE

android - 哪个是在 android 中定义权限的更好方法?

java - 将音频文件插入Mysql数据库

java - 是否有 Clojure/Java 类和协议(protocol)的简单引用?

java - Android 在循环后将所有对象添加到列表中

java - 如何用数据库填充 JTable 中的数据?

java - 如何从我的 Android 应用程序通过 WhatsApp 向特定联系人发送消息?