【Android知识点精讲】(7)系统窗口的调用

文章出处:http://blog.youkuaiyun.com/scarthr/article/details/42190727

前面我们在讲Activity的时候已经说过,在使用Intent启动Activity的时候有两种方式,一种是显示的,一种是隐士的,那么隐士的就可能会有多个与之适配,我们调用系统窗口便是使用了Intent的隐士启动。


一 调用系统窗口

我们在布局中定义了许多按钮,点击每一个按钮都会调用一个不同的系统窗口,我们直接看Java代码:

package com.thr.testsysactivity;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button btnCall = (Button) findViewById(R.id.btnCall);
		Button btnTouchDialer = (Button) findViewById(R.id.btnTouchDialer);
		Button btnDial = (Button) findViewById(R.id.btnDial);
		Button btnWeb = (Button) findViewById(R.id.btnWeb);
		Button btnAudio = (Button) findViewById(R.id.btnAudio);
		Button btnGoHome = (Button) findViewById(R.id.btnGoHome);
		Button btnContactList = (Button) findViewById(R.id.btnContactList);
		Button btnSettings = (Button) findViewById(R.id.btnSettings);
		Button btnWifiSettings = (Button) findViewById(R.id.btnWifiSettings);
		btnCall.setOnClickListener(this);
		btnTouchDialer.setOnClickListener(this);
		btnDial.setOnClickListener(this);
		btnWeb.setOnClickListener(this);
		btnAudio.setOnClickListener(this);
		btnGoHome.setOnClickListener(this);
		btnContactList.setOnClickListener(this);
		btnSettings.setOnClickListener(this);
		btnWifiSettings.setOnClickListener(this);
	}

	@Override
	public void onClick(View view) {
		try {
			switch (view.getId()) {
			// 拨打电话
			case R.id.btnCall:
				Intent callIntent = new Intent(Intent.ACTION_CALL,
						Uri.parse("tel:12345678"));
				startActivity(callIntent);
				break;
			case R.id.btnTouchDialer:
				// 打开电话拨号器
				Intent touchDialerIntent = new Intent(
						"com.android.phone.action.TOUCH_DIALER");
				startActivity(touchDialerIntent);
				break;
			case R.id.btnDial:
				// 打开电话拨号器并传入电话
				Intent dialIntent = new Intent(Intent.ACTION_DIAL,
						Uri.parse("tel:87654321"));
				startActivity(dialIntent);
				break;
			case R.id.btnWeb:
				// 打开浏览器浏览网页
				Intent webIntent = new Intent(Intent.ACTION_VIEW,
						Uri.parse("http://blog.youkuaiyun.com/nokiaguy"));
				startActivity(webIntent);
				break;
			case R.id.btnContactList:
				// 打开联系人列表
				Intent contactListIntent = new Intent(
						"com.android.contacts.action.LIST_CONTACTS");
				startActivity(contactListIntent);
				break;
			case R.id.btnSettings:
				// 打开系统设置
				Intent settingsIntent = new Intent("android.settings.SETTINGS");
				startActivity(settingsIntent);
				break;
			case R.id.btnWifiSettings:
				// 打开Wifi设置
				Intent wifiSettingsIntent = new Intent(
						"android.settings.WIFI_SETTINGS");
				startActivity(wifiSettingsIntent);
				break;
			case R.id.btnAudio:
				// 打开音频文件
				Intent audioIntent = new Intent(Intent.ACTION_GET_CONTENT);
				audioIntent.setType("audio/*");
				startActivity(Intent.createChooser(audioIntent, "选择音频程序"));
				break;
			case R.id.btnGoHome:
				// 返回到Home界面
				Intent gohomeIntent = new Intent("android.intent.action.MAIN");
				gohomeIntent.addCategory("android.intent.category.HOME");
				startActivity(gohomeIntent);
				break;
			}
		} catch (Exception e) {
			Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
		}
	}
}

每一个按钮所执行的方法参数已经写的很清楚了,需要的时候直接调用即可。


二 调用系统窗口细节

当时用Intent进行隐式启动系统Activity的时候,一共有3个相对比较重要的属性可以设置:action、category、data。通过查看系统源码我们可以看到系统Activity在Manifest的intent-filter中基本都写了这3个属性。当我们应用的Intent隐式启动是,满足这3个参数的intent-filter,就会调用系统的Activity。

值得注意的是:如果我们调用Intent的setData方法,系统就会将Type设置成null,如果调用setType方法,系统就会将data设为null,只有在调用setDataAndType方法时才会一起设置好。




源码下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值