找不到符号方法startActivity(android.content.Intent) [英] Cannot find symbol method startActivity(android.content.Intent)
问题描述
我是制作Android应用程序的初学者。我制作了一个显示我的网页的网页视图。我的网页包含我想在邮件和拨号等外部应用程序中打开的联系人按钮。因此我得到了一些帮助并得到了这样的代码
I am a beginner in making android applications. I have made a web view which shows my web page. My web page consists contact buttons that i want to be opened in external apps like mail and dial. Therefore i got some help and got a code like this
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有什么问题?
But then i got this error "Cannot find symbol method startActivity(android.content.Intent)" What is wrong with the startactivity?
推荐答案
WebViewClient
没有上下文,因此您无法直接启动活动
WebViewClient
doesn't have context so you cannot directly start an activity
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
或者,使用其构造函数将上下文传递给webViewClient
Alternatively, pass context to webViewClient using its constructor
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;
}
这篇关于找不到符号方法startActivity(android.content.Intent)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!