Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-拦截来自Webview的链接_Java_Android_Pdf_Android Intent_Webview - Fatal编程技术网

Java Android-拦截来自Webview的链接

Java Android-拦截来自Webview的链接,java,android,pdf,android-intent,webview,Java,Android,Pdf,Android Intent,Webview,因此,我需要用户在webview中单击的链接,在本例中,它是一个包含.pdf文件的链接。我有启动PDF阅读器的代码,但它没有得到链接,所以它只是在点击PDF文件时加载PDF阅读器。如何截取此链接并将其提供给我的PDF阅读器 代码: 公共类atcFaa扩展活动{ 网络视图; 私有字符串url; ProgressBar pd=null; 创建时的公共void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setCont

因此,我需要用户在webview中单击的链接,在本例中,它是一个包含.pdf文件的链接。我有启动PDF阅读器的代码,但它没有得到链接,所以它只是在点击PDF文件时加载PDF阅读器。如何截取此链接并将其提供给我的PDF阅读器

代码:

公共类atcFaa扩展活动{
网络视图;
私有字符串url;
ProgressBar pd=null;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.atccti);
pd=(ProgressBar)findviewbyd(R.id.web\u view\u progress\u bar);
webview=(webview)findViewById(R.id.ctiWebView);
webview.getSettings().setJavaScriptEnabled(true);
按钮打开PDFBTN=新按钮(此按钮);
addJavascriptInterface(openPdfBtn,“openPdfBtn”);
openPdfBtn.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
openPdf();
}
});
setWebView.WebChromeClient(新WebChromeClient(){
public void onProgressChanged(WebView视图,int-progress){
if(progress<100&&pd.getVisibility()==ProgressBar.GONE){
pd.setVisibility(进度条可见);
}
pd.setProgress(progress);
如果(进度==100){
pd.setVisibility(ProgressBar.GONE);
}
}
});
setWebViewClient(新的WebViewClient(){
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
webview.getSettings().setJavaScriptEnabled(true);
//请在此处输入您的处理代码,哪个url是请求的url
//您可能需要打开该url,而不是重定向:
如果(url.startsWith(“电话:”){
startActivity(新的意图(Intent.ACTION\u拨号,Uri.parse(url));
}else if(url.startsWith(“mailto:”)){
url=url.replaceFirst(“mailto:,”);
url=url.trim();
意向i=新意向(意向.行动\发送);
i、 setType(“纯/文本”).putExtra(Intent.EXTRA_电子邮件、,
新字符串[]{url});
星触觉(i);
}else if(url.startsWith(“geo:”)){
试一试{
}捕获(例外e){
系统输出打印ln(e);
}
}else if(url.endsWith(“pdf”)){
试一试{
}
捕获(ActivityNotFounde异常){
Toast.makeText(atcFaa.this,“未安装PDF查看器”,
Toast.LENGTH_LONG).show();
}
}
否则{
view.loadUrl(url);
}
返回true;
//那么它就不是默认操作处理的
}
});
webview.loadUrl(“http://www.faa.gov/air_traffic/publications/");
}
受保护的void openPdf(){
//TODO自动生成的方法存根
意图=新意图();
intent.setAction(intent.ACTION\u视图);
Uri=Uri.parse(url);
setDataAndType(uri,“应用程序/pdf”);
星触觉(意向);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
MenuInflater充气机=getMenuInflater();
充气器。充气(R.menu.menu2,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.atcAbout2:
Toast.makeText(这是“您按下了图标!”,Toast.LENGTH\u LONG)
.show();
打破
案例R.id.atcContact2:
emailme();
打破
}
返回true;
}
私有void emailme(){
//TODO自动生成的方法存根
字符串domsEmail=”MYEMAIL@EXAMPLE.com";
String message=“在此处插入消息”;
字符串myemail[]={domsEmail};
Intent emailIntent=新的Intent(android.content.Intent.ACTION\u SEND);
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,myemail);
emailIntent.putExtra(android.content.Intent.EXTRA_主题,
“空中交通管制助理”);
emailIntent.setType(“纯/文本”);
emailIntent.putExtra(android.content.Intent.EXTRA_文本、消息);
星触觉;
}
/*
*@Override public void onBackPressed(){if(webview.canGoBack())
*webview.goBack();else super.onBackPressed();}
*/
公共void setUrl(字符串url){
this.url=url;
}
公共字符串getUrl(){
返回url;
}
}

我不知道您的html代码的结构,但我会假装您有一个按钮。下面是html中要包含的代码:

<button onclick='openPdfBtn.performClick();'>Open pdf</button> 

我没有按钮,这是一个纯粹的网络视图。我想让应用程序识别到一个PDF文件的链接被点击,或者启动一种查看方式,或者将其加载到谷歌文档中进行查看。你说它是纯网络视图是什么意思?你对html没有控制权?是否打开通用html页面?我指定了链接是的,但它只是页面的一个视图。在页面上有我想查看的PDF文件链接。我将用完整的代码编辑原始帖子。嗯,这是一样的,只需在HREF上指定onclik本机按钮仅用于与js接口的绑定,它根本不可见,它不在您的布局中。您已经覆盖了链接加载-您应该只需在“endswith(pdf)”中调用openPdf()函数案例
<button onclick='openPdfBtn.performClick();'>Open pdf</button> 
Button openPdfBtn = new Button(this); //this is not gonna be visible
yourWebView.addJavascriptInterface(openPdfBtn, "openPdfBtn"); //here you bind the js with the native button
openPdfBtn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        openPdf();
    }
});