如何处理自定义网址事件?

时间:2014-10-23 21:23:56

标签: android parsing android-intent android-activity webview

当我点击我的"添加到日历"我的应用程序崩溃时遇到问题按钮,看着logcat,我发现我没有活动来处理这个事件,我不太清楚如何处理这个按钮被按下时它用这个代码解析来自url的信息

package com.sideresult.cyfaircal;

public class Event {
String[] myStringArr;

int day;
int month;
int year;
String timeString;
int hourS;
int minuteS;
int hourE;
int minuteE;
String title;
String timezone;

public int getDay() {
    return Integer.parseInt(myStringArr[0].split("=")[1]);
}

public int getMonth() {
    return Integer.parseInt(myStringArr[1].split("=")[1]);
}

public int getYear() {
    return Integer.parseInt(myStringArr[2].split("=")[1]);
}

public String getTimeString() {
    return myStringArr[3].split("=")[1];
}

public int getHourS() {
    return Integer.parseInt(myStringArr[4].split("=")[1]);
}

public int getMinuteS() {
    return Integer.parseInt(myStringArr[5].split("=")[1]);
}

public int getHourE() {
    return Integer.parseInt(myStringArr[6].split("=")[1]);
}

public int getMinuteE() {
    return Integer.parseInt(myStringArr[7].split("=")[1]);
}

public String getTitle() {
    return myStringArr[8].split("=")[1];
}

public String getTimezone() {
    return myStringArr[9].split("=")[1];
}

public Event(String[] myStringArr) {
    super();
    this.myStringArr = myStringArr;
}
}

目前整个应用程序都在webview中运行,我的所有句柄都在此代码中

import android.content.Intent;
import android.net.Uri;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MyAppWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(Uri.parse(url).getHost().endsWith("filenecal.com")) {
            return false;
        }

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

我不知道为了解析并将解析后的数据从自定义网址添加到日历中需要哪种活动

  

mlevents:// add / event?day = 8& month = 10& year = 2014& timestring = 12:00 PM - 12:30 PM& hourS = 12& minuteS = 00& hourE = 12& minuteE = 30& title = Filene 101:想想。做。更改。 |网络研讨会&安培;时区= CST

这是我的logcat logcat

这是我的带有日历的tab2

package com.sideresult.cyfaircal;

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


public class Tab2 extends Activity {



private WebView webView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab2);

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://filenecal.com/mobile/index.php");
    webView.setWebViewClient(new MyAppWebViewClient());
     WebSettings settings = webView.getSettings();
        settings.setLoadWithOverviewMode(true);
        settings.setUseWideViewPort(true);

}
}

1 个答案:

答案 0 :(得分:0)

您是否在任何活动中使用MyAppWebViewClient?如果没有,那么您需要首先创建一个活动,然后您需要在该Activity中包含MyAppWebViewClient类的对象,该对象用作应用程序的主要活动。

然后你可以简单地调用

view.loadUrl(url);

而不是

view.getContext().startActivity(intent);
你的shouldOverrideUrlLoading()方法中的

您可以从活动的oncreate方法调用此webview客户端,如下所示

    WebView webview = (WebView) findViewById(R.id.webview);
    web.setWebViewClient(new MyAppWebViewClient());
    web.loadUrl("http://www.google.com");

希望这会有所帮助。如果发现任何问题,请告诉我。