【问题标题】:how to handle a custom url event?如何处理自定义 url 事件?
【发布时间】:2014-12-19 16:34:06
【问题描述】:

当我单击“添加到日历”按钮时,我的应用程序崩溃时遇到问题,查看 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;
    }
}

我不知道我需要什么样的活动才能从自定义 url 解析并将解析的数据添加到日历中

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:想想。做。改变。 |网络研讨会&timezone=CST

这是我的日志猫

这是我的带有日历的 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);

}
}

【问题讨论】:

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


    【解决方案1】:

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

    那么你可以简单地调用

    view.loadUrl(url);
    

    而不是

    view.getContext().startActivity(intent);
    

    在你的 shouldOverrideUrlLoading() 方法中。

    您可以从活动中的 oncreate 方法调用此 webviewclient,如下所示

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

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

    【讨论】:

    • 我确实在活动中使用它,它在我的 tab2 中,这是加载日历的地方,但是当我单击按钮添加到日历时,它不知道如何处理 mlevent跨度>
    • 我已经对显示我调用 MyAppWebViewClient 的位置的问题进行了编辑,问题是我怎样才能让它在选项卡二上的 webview 中传递 mlevent,我不确定要使用的代码让它然后解析信息并将其导出到日历而不是崩溃应用程序
    猜你喜欢
    • 2018-05-28
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多