Android-Intent

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

运行图示如下






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值