Intent 隐式跳转,向下一个活动传递数据,向上一个活动返回数据。

一、每个Intent只能指定一个action,多个Category.

  使用隐式跳转,我们不仅可以跳转到自己程序内的活动,还可以启动其他程序的活动。使得Android多个程序之间的功能共享成为可能。

  例如:

  

  public class MainActivity extends Activity {
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.button1);
    btn.setOnClickListener(new View.OnClickListener() {  
    @Override
    public void onClick(View v) {
          Intent intent = new Intent(Intent.ACTION_VIEW);
          intent.setData(Uri.parse("http://www.baidu.com"));
          startActivity(intent);
        }
      });
    }
  }

  我们可以在<intent-filter>中再配置一个<data>标签,用于更精确的指定当前活动能够响应什么样的数据。<data>标签中可以配置一下内容:

  1.1 Android scheme:用于指定数据的协议;

  1.2 Android:host,用于指定数据的主机名称;

  1.3Android:port,用于指定数据的端口,一般紧跟在主机名的后面,  

  1.4android:path,用于指定主机名和端口号之后的部分,如一段网址跟在端口后的内容

  1.5 Android:mimeTYPE:用于指定可以处理的数据类型,可以用通配符。

  只有<data>中指定的内容与Intent携带的数据完全一致是才能响应该Intent,一般在<data>中都不会指定过多的内容。

  例子:调用系统打电话的activity:

  

public class SecendActivity extends Activity {
Button Bnt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Bnt2 = (Button) findViewById(R.id.button2);
Bnt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}
});
}
}

1.7 Uri.parse()可以将一个字符串解析为URI对象。

二、通过Intent向下一个活动传递数据,向一个上活动返回数据
  Intent启动一个活动是还可以传递数据,Intent提供一些列的putExtra()重载方法,启动了另外一个方法,只需要把数据重Intent中取出来。
  在被启动的activity中使用getIntent方法获取启动它的Intent,然后调用getStringExtra()方法就可取出传递的数据。




原文地址:https://www.cnblogs.com/llxbl/p/6071709.html