2014-02-07 38 views
3

我是新来的Android,我想创建一个意图,查看谷歌网站。我的字符串声明如下:隐含的意图查看网址

static private final String URL = "http://www.google.com"; 

和我的意图:

Intent browserIntent = new Intent(Intent.ACTION_VIEW); 
browserIntent.setData(Uri.parse("geo:+URL")); 
startActivity(browserIntent); 

这段代码显示在Eclipse中没有错误,但我认为这可能是错误的。

+2

它可能?你有没有测试过它?结果是什么? – randomizer

+1

“geo:+ URL”是完全错误的。这只是一个字符串,你不是真的在这里使用你的静态字段... – 2Dee

回答

5

你没有正确地构建开放的,试图串联2字符串时,使用此:

String s = "I'm a string variable"; 

String concatenated = s + " and I'm another String variable"; 

现在的拼接的内容是

我是一个字符串变量和我“M另一个字符串变量

如果你这样做:

String concatenated = "s + and I'm another String variable"; 

的拼接的内容是

S +和我

其次,你为什么用地理乌里另一个字符串变量?这是查看位置。要查看网站,只需使用URL(并且不要忘记“http://”部分):

String URL = "http://www.google.com"; 
browserIntent.setData(Uri.parse(URL)); 
+0

我可以写吗? browserIntent.setData(Uri.parse( “http://www.google.com”)); – user3284769

+0

不,您不应该遗漏http部分,或者最终会出现错误,请使用browserIntent.setData(Uri.parse(“http://google.com”));看看这个问题的细节:http://stackoverflow.com/questions/2201917/how-can-i-open-a-url-in-androids-web-browser-from-my-application?rq=1 – 2Dee

+0

browserIntent.setData(Uri。解析(URL));我已经把它这样 – user3284769

0

2Dee的回答是正确的。您也可以在一行中提供操作并设置数据uri。查看网站。

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(URL)); 
startActivity(browserIntent); 
2

您可以创建一个意图,然后为它设置数据。意图还有一个构造函数,它可以采取行动String和数据URI。

当你想在地图上显示某些东西时,还需要使用geo:。因此,在浏览器中查看网址,您只需使用网站网址即可。您可以将它传递给Uri.parse()方法以获取intents构造函数中所需的URI对象。 你可以简单地做 -

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); 
Intent browserChooserIntent = Intent.createChooser(browserIntent , "Choose browser of your choice"); 
startActivity(browserChooserIntent); 
0
Intent browserIntent=null, chooser=null; 
    browserIntent= new Intent(Intent.ACTION_VIEW); 
    browserIntent.setData(Uri.parse("http://www.google.com")); 
    chooser = browserIntent.createChooser(intent,"Open Website Using..."); 
    if(browserIntent.resolveActivity(getPackageManager()) != null){ 
     startActivity(chooser); 
    }