将URL字符串设置为URI对象?

时间:2013-11-22 21:23:20

标签: android

如何将String URL设置为Intent作为Uri对象的数据?

我哪里错了?

protected String[] mUrls = { "http://www.teamtreehouse.com", "http://developer.android.com", "http://www.github.com" };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_custom_list);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mUrls);
    setListAdapter(adapter);
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
      super.onListItemClick(l, v, position, id);
      Intent intent = new Intent(Intent.ACTION_VIEW);
      intent.setData(Uri.parse(mUrls));
      startActivity(intent);
}

3 个答案:

答案 0 :(得分:1)

您只能使用方法String解析一个Uri.parse(String uriString),因此您无法将String数组放在那里。

答案 1 :(得分:1)

不要传递网址数组。您需要在每个列表项上选择一个,因此将代码更改为:

protected String[] mUrls = { "http://www.teamtreehouse.com", "http://developer.android.com", "http://www.github.com" };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_custom_list);

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mUrls);
    setListAdapter(adapter);
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
      super.onListItemClick(l, v, position, id);
      Intent intent = new Intent(Intent.ACTION_VIEW);
      intent.setData(Uri.parse(mUrls[position]));
      startActivity(intent);
}

答案 2 :(得分:0)

 intent.setData(Uri.parse(mUrls));

这看起来很不对劲。 mUrls是一个字符串数组,您将其解析为一个Uri,这将无效。 您必须将Array中的每个String解析为不同的Uris。

注意:这不是真正的工作代码,而是伪代码,例如:

intent.setData(mUrls);

您收到数据的地方:

for (String s : mUrls){

Uri u = Uri.parse(s); 

}