Android-Intent

来源:互联网 发布:网络好歌推荐100首 编辑:程序博客网 时间:2024/05/29 18:11

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() {@Overridepublic 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() {@Overridepublic 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;@Overrideprotected 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() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.setClass(MainActivity.this,SecondActivity.class);intent.putExtra("str", "suancaiyu");//startActivity(intent);startActivityForResult(intent,REQUEST_CODE);}};@Overrideprotected 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();  }}}@Overridepublic 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;@Overrideprotected 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(){@Overridepublic void onClick(View v) {Intent intent=new Intent();intent.putExtra("back", "Back Data");setResult(RESULT_CODE,intent);finish();}};}

注意需要在AndroidManifest.xml中注册第二个activity

运行图示如下






0 0
原创粉丝点击