Post

【Android】Intent

  • Intent(意图)是一个完整的线程
1
2
Intent intent = new Intent(SrcActivity.this, DstActivity.class)
startActivity(intent);
  • startActivity():单向传输数据,startActivityForResult():双向传输数据,可以返回数据
  • 类似于new Thread(…).start()
  • 反射机制很重要的两个概念:Class表示类,ClassName.class实例化
  • Activity使用的是栈结构,调用的关联关系使用Intent实现

应用

(1) 调用Activity

1
2
3
Intent it = new Intent(SrcActivity.this, DstActivity.class);
it.putExtra("key", value);
startActivity(it);

被调用的Activity获取数据:

1
2
Intent intent = super.getIntent();
String value = intent.getStringExtra("key");

可以调用同一个Activity的另一个实例:

1
startActivity(new Intent(MainActivity.this, MainActivity.class));

(2) 打开网页(调用浏览器)

1
2
3
4
5
Uri uri = Uri.parse("http://" + etWebsite.getText().toString());
Intent it = new Intent();
it.setAction(Intent.ACTION_VIEW);
it.setData(uri);
startActivity(it);

权限配置:

1
<uses-permission android:name="android.permission.INTERNET" />

(3) 打电话(调用电话应用)

项目:电话拨号器

(4) 发短信(调用短信应用)

项目:短信发送

(5) 发送Email(调用邮件应用)

1
2
3
4
5
6
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_EMAIL, address);  //address是字符串数组
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, content);
startActivity(intent);

权限配置:

1
<uses-permission android:name="android.permission.INTERNET" />

(6) 调用ContentProvider

俗成>约定>配置>编程

This post is licensed under CC BY 4.0 by the author.