2012-01-29 230 views
2

我一直在试图用浏览器打开一个kml文件的链接。这样,当它进入链接时,它将下载并在Google地图(或Google地球)中打开文件。但是,当我在模拟器中点击它时,似乎没有任何事情发生。有任何想法吗?在浏览器中打开链接?

package shc_BalloonSat.namespace; 

import android.content.Intent; 
import android.net.Uri; 

public class dl_viewKML 
{ 
    void downloadFile() 
    { 
     String encodedURL = "http://" + "www.wktechnologies.com/shc_android_app/data.kml"; 

     Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(encodedURL)); 
     startActivity(webIntent); 

    } 

    private void startActivity(Intent webIntent) 
    { 
     // TODO Auto-generated method stub 

    } 
} 

Eclipse不会显示任何问题,并且它不会在LogCat中显示任何内容。

+0

提供更多信息。 – JoxTraex 2012-01-29 08:22:03

+0

你想要什么信息?它什么都不做。我点击调用这个函数的按钮,它什么也不做。 LogCat中没有显示任何内容,控制台中没有显示任何内容。就好像我没有甚至没有点击按钮。为什么不打开这个链接? – tylerbhughes 2012-01-29 08:31:50

+0

您是否确定它通过日志实际进入该方法? – JoxTraex 2012-01-29 08:32:43

回答

2

对于该方法startActivity()开始你Intent你必须无论是从Context类或子类(如活动,FragmentActivity)调用或获取上下文的引用,并调用它。

因为您的类dl_viewKML不是Context的子类,所以您必须获取对上下文的引用。你实例的dl_viewKML类,你会做这样的事情

package shc_BalloonSat.namespace; 

import android.content.Intent; 
import android.net.Uri; 

public class dl_viewKML { 
private Context ctx 

public dl_viewKML(Context ctx) { 
this.ctx = ctx; 
} 
    void downloadFile() 
    { 
     String encodedURL = "http://" + "www.wktechnologies.com/shc_android_app/data.kml"; 

     Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(encodedURL)); 
     ctx.startActivity(webIntent); 

    } 

} 

在你Activity

dl_viewKML obj = new dl_viewKML(this); 

您可以通过添加一个构造带 Context参数像这样这样做
dl_viewKML obj = new dl_viewKML(getApplicationContext()); 
+0

谢谢,它得到它的工作。现在,如果我只想知道如何在Google地图中打开它,而不是在浏览器中显示文本。 – tylerbhughes 2012-01-29 11:09:50

+0

@RandomlyKnighted我没有Google地图的使用经验,但尝试用Uri.parse(“geo:0,0?q =”+ encodedURL)替换'Uri.parse(encodedURL) – Luksprog 2012-01-29 11:57:26