Android-Intent
百度百科里的介绍如下
Intent(意图)主要是解决Android应用的各项组件之间的通讯
Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用
因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦
下面使用Intent实现拨打电话,点击Button,即拨打110
需要在AndroidManifest.xml里添加权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:110"));
startActivity(intent);
}
};
发送信息需要添加权限
<uses-permission android:name="android.permission.SEND_SMS"/>
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:5554"));
intent.putExtra("sms_body", "Welcome to suancaiyu!");
startActivity(intent);
}
};
下面用Intent来启动新的Activity,并实现传递参数和返回参数的功能
第一个Activity向第二个Activity传递一个字符串,第二个Activity结束后向第一个Activity返回一个参数
MainActivity.java
public class MainActivity extends Activity {
private Button mainbnt = null;
private static final int REQUEST_CODE=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainbnt = (Button) findViewById(R.id.btn);
mainbnt.setOnClickListener(listener);
}
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this,SecondActivity.class);
intent.putExtra("str", "suancaiyu");
//startActivity(intent);
startActivityForResult(intent,REQUEST_CODE);
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==REQUEST_CODE)
{
if(resultCode==SecondActivity.RESULT_CODE)
{
Bundle bundle=data.getExtras();
String str=bundle.getString("back");
Toast.makeText(MainActivity.this, str,
Toast.LENGTH_LONG).show();
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
SecondActivity.java
public class SecondActivity extends Activity {
static final int RESULT_CODE=1;
private Button secondbtn=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
String str=bundle.getString("str");
Toast.makeText(SecondActivity.this, str,
Toast.LENGTH_LONG).show();
secondbtn=(Button)findViewById(R.id.secondbtn);
secondbtn.setOnClickListener(listener);
}
private OnClickListener listener=new OnClickListener()
{
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("back", "Back Data");
setResult(RESULT_CODE,intent);
finish();
}
};
}
注意需要在AndroidManifest.xml中注册第二个activity
运行图示如下