`

Android学习10-----Android组件通信 (1) Intent

阅读更多

 

在一个项目之中,会由多个 Activity 程序所组成,那么此时,这么多个 Activity 程序之间就需要进行通讯,而这之间的通讯就依靠 Intent 完成。

Activity 程序支持的 Intent 操作方法:

No.

方法

描述

1

Public void startActivity(Intent intent)

启动一个 Activity ,并通过 Intent 传送数据

2

Public void startActivityForResult(Intent intent,

int requestCode)

启动并接受另一个 Activity 程序回传数据,当 requestCode 大于 0 才可以触发

onActivityResult()

3

Public Intent getIntent()

返回启动当前 Activity 程序的 Intent

4

Protected void onActivityResult(int requestCode,

int resultCode,Intent data)

当需要接受 Intent 回传数据的时候覆写此方法对回传操作进行处理

5

Public void finish()

调用此方法会返回之前的 Activity 程序,并自动调用 onActivityResult() 方法

 

一、 Intent 带返回值

Intent02_Send_Activity.java

package com.iflytek.demo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Intent02_Send_Activity extends Activity {
	private Button mybut = null;
	private TextView msg = null;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.send_main);
		this.mybut = (Button) super.findViewById(R.id.mybut);
		this.msg = (TextView) super.findViewById(R.id.msg);
		this.mybut.setOnClickListener(new OnClickListenerImpl());
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View v) {
			Intent intent = new Intent(Intent02_Send_Activity.this,
					Receive.class);
			intent.putExtra("myinfo", "你好");
			// 带返回值的跳转,如果1大于0,则可以接受
			Intent02_Send_Activity.this.startActivityForResult(intent, 1);
			// 不带返回值的跳转 Intent_Send01Activity.this.startActivity(it); // 跳转

		}
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode,
			Intent intent) {
		switch (resultCode) {
		case RESULT_OK:
			Intent02_Send_Activity.this.msg.setText("返回的内容是:"
					+ intent.getStringExtra("retmsg"));
			break;
		case RESULT_CANCELED:
			Intent02_Send_Activity.this.msg.setText("操作取消。");
			break;
		default:
			break;
		}
	}
}
 

Receive.java

package com.iflytek.demo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Receive extends Activity {
	private TextView show = null;
	private Button retbut = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.receive_main);
		this.show = (TextView) super.findViewById(R.id.show);
		this.retbut = (Button) super.findViewById(R.id.retbut);
		Intent intent = super.getIntent(); // 取得当前的Intent
		String info = intent.getStringExtra("myinfo");
		this.show.setText(info);
		this.retbut.setOnClickListener(new OnClickListenerImpl());
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View v) {
			Receive.this.getIntent().putExtra("retmsg", "祖国:中国");
			Receive.this.setResult(RESULT_OK, Receive.this.getIntent());
			Receive.this.finish();
		}

	}
}
 

 

 

前面我们说了 Intent 的基本操作,设置跳转时的数据都是附加数据( Extrs , 那么除了这些附加数据之外,也可以传递更多的内容,并且调用本机的一些已经为用户提供好的 Intent 操作。

Intent 数据传递实际上分为以下六种数据:操作( Action )、数据( Data )、数据类型( Type )、操作类别( Category )、附件信息( Extras )、组件( Component )、标志( Flags );

 

1 、操作( Action ):设置该 Intent 会触发的操作类型,可以通过 setAction() 方法进行设置

No.

Action 名称

AndroidManifest.xml 配置名称

描述

1

ACTION_MAIN

android.intent.action. MAIN

作为一个程序的入口,不需要接受数据

2

ACTION_VIEW

android.intent.action. VIEW

用于数据的显示

3

ACTION_DIAL

android.intent.action. DIAL

调用电话拨号程序

4

ACTION_EDIT

android.intent.action. EDIT

用于编辑给定的数据

5

ACTION_PICK

android.intent.action. PICK

从特定的一组数据之中进行数据的选择操作

6

ACTION_RUN

android.intent.action. RUN

运行数据

7

ACTION_SEND

android.intent.action. SEND

调用发送短信程序

8

ACTION_GET_CONTENT

android.intent.action. GET_CONTENT

根据指定的 Type 来选择打开操作内容的 Intent

9

ACTION_CHOOSER

android.intent.action. CHOOSER

创建文件操作选择器

相当于通过 Action 指定要操作的类型

 

2 、数据( Data

描述 Intent 所操作数据的 URI 及类型,可以通过 setData() 进行设置,不同的操作对应着不同的 Data

No.

操作类型

Data(Uri) 格式

范例

1

浏览网页

http:// 网页地址

http://www.baidu.com

2

拨打电话

tel: 电话号码

tel:13956027313

3

发送短信

smsto: 短信接收人号码

smsto:13956027313

4

查找 SD 卡文件

file:///sdcard / 文件 or 目录

file:///sdcard /pic.jpg

5

显示地图

geo: 坐标 , 坐标

geo:32,-75

这些数据是和跳转的程序接受标准有关。

 

3 、数据的类型( Type ):指定要传送数据的 MIME 类型,可以直接通过 setType() 方法进行设置。

No.

作用

MIME 类型

1

发送短信

vnd.android-dir/mms-sms

2

设置图片

Image/png

3

普通文本

Text/plain

4

设置音乐

Audio/mp3

 

4 、操作的类别( Category ):对执行操作的类别进行描述,可以通过 addCategory() 方法设置多个类别

No.

Category 名称

AndroidManifest.xml 配置名称

描述

1

CATEGORY_LAUNCHER

android.intent.category. LAUNCHER

表示此程序显示在应用程序列表中

2

CATEGORY_HOME

android.intent.category. HOME

显示主桌面,即开机时的第一个界面

3

CATEGORY_PREFERENCE

android.intent.category. PREFERENCE

运行后将出现一个选择面板

4

CATEGORY_BROWSABLE

android.intent.category. BROWSABLE

显示一张图片、 email 信息

5

CATEGORY_DEFAULT

android.intent.category. DEFAULT

设置一个操作的默认执行

6

CATEGORY_OPENABLE

android.intent.category. OPENABLE

Action 设置为 GET_CONTENT 时用于打开指定的 Uri

 

5 、附件信息( Extras ):传递的是一组键值对,可以使用 pubExtra() 方法进行设置,主要的功能是传递数据( Uri )所需要的一些额外的操作信息

No.

操作数据

附加信息

作用

1

短信操作

sms_body

表示要发送短信的内容

2

彩信操作

Intent.EXTRA_STREAM

设置发送彩信的内容

3

指定接收人

Intent.EXTRA_BCC

指定接受 Email 或信息的接收人

4

Email 接收人

Intent.EXTRA_EMAIL

用于指定 email 的接收人,接受一个数组

5

Email 标题

Intent.EXTRA_SUBJECT

用于指定 email 邮件的标题

6

Email 内容

Intent.EXTRA_TEXT

用于指定 email 邮件的内容

 

6 、组件( Component ):指明了将要处理的 Activity 程序,所有的组件信息都被封装在一个 ComponentName 对象之中,这些组件必须在 AndroidManifest.xml 文件的“ <application> ”中注册。

 

7 、标识( Flags ):用于指示 android 系统如何加载并运行一个操作,可以通过 addFlags() 方法进行增加。

 

下面我们来看看 Intent 内置功能的范例。

二、打开网页

 

package com.iflytek.demo;

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;

public class Intent03Activity extends Activity {
	/** Called when the activity is first created. */
	private Button mybut = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得组件
		this.mybut.setOnClickListener(new OnClickListenerImpl());
	}

	private class OnClickListenerImpl implements OnClickListener {
		@Override
		public void onClick(View v) {
			Uri uri = Uri.parse("http://xdwangiflytek.iteye.com/"); // 设置操作的路径
			Intent intent = new Intent();
			intent.setAction(Intent.ACTION_VIEW); // 设置要操作的Action
			intent.setData(uri); // 要设置的数据
			Intent03Activity.this.startActivity(intent); // 执行跳转
		}

	}
}
 

 

三、拨打电话(进入打电话界面,值填充完成)

package com.iflytek.demo;

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.EditText;

public class Intent04Activity extends Activity {
	/** Called when the activity is first created. */
	private Button mybut = null;
	private EditText tel = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得组件
		this.tel = (EditText) super.findViewById(R.id.tel); // 取得组件
		this.mybut.setOnClickListener(new OnClickListenerImpl());
	}

	private class OnClickListenerImpl implements OnClickListener {
		@Override
		public void onClick(View v) {
			String telStr = Intent04Activity.this.tel.getText().toString(); // 取得输入信息
			Uri uri = Uri.parse("tel:" + telStr); // 设置操作的路径
			Intent intent = new Intent();
			intent.setAction(Intent.ACTION_DIAL); // 设置要操作的Action
			intent.setData(uri); // 要设置的数据
			Intent04Activity.this.startActivity(intent); // 执行跳转
		}

	}
}
 

 

四、直接拨打电话呼出

package com.iflytek.demo;

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.EditText;

public class Intent05Activity extends Activity {
	/** Called when the activity is first created. */
	private Button mybut = null;
	private EditText tel = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得组件
		this.tel = (EditText) super.findViewById(R.id.tel); // 取得组件
		this.mybut.setOnClickListener(new OnClickListenerImpl());
	}

	private class OnClickListenerImpl implements OnClickListener {
		@Override
		public void onClick(View v) {
			String telStr = Intent05Activity.this.tel.getText().toString(); // 取得输入信息
			Uri uri = Uri.parse("tel:" + telStr); // 设置操作的路径
			Intent intent = new Intent();
			intent.setAction(Intent.ACTION_CALL); // 设置要操作的Action
			intent.setData(uri); // 要设置的数据
			Intent05Activity.this.startActivity(intent); // 执行跳转
		}
	}
}

 添加权限:

 

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

 

五、发送短信息(进入发短信界面,值填充完成)

package com.iflytek.demo;

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.EditText;

public class Intent06Activity extends Activity {
	/** Called when the activity is first created. */
	private Button mybut = null;
	private EditText tel = null;
	private EditText content = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得组件
		this.tel = (EditText) super.findViewById(R.id.tel); // 取得组件
		this.content = (EditText) super.findViewById(R.id.content); // 取得组件
		this.mybut.setOnClickListener(new OnClickListenerImpl());
	}

	private class OnClickListenerImpl implements OnClickListener {
		@Override
		public void onClick(View v) {
			String telStr = Intent06Activity.this.tel.getText().toString(); // 取得输入信息
			String note = Intent06Activity.this.content.getText().toString(); // 取得内容
			Uri uri = Uri.parse("smsto:" + telStr); // 设置操作的路径
			Intent intent = new Intent();
			intent.setAction(Intent.ACTION_SENDTO); // 设置要操作的Action
			intent.putExtra("sms_body", note); // 设置短信内容
			intent.setType("vnd.android-dir/mms-sms"); // 短信的MIME类型
			intent.setData(uri); // 要设置的数据
			Intent06Activity.this.startActivity(intent); // 执行跳转
		}

	}
}

 

六、发送彩信

 

package com.iflytek.demo;

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;

public class Intent07Activity extends Activity {
	/** Called when the activity is first created. */
	private Button mybut = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得组件
		this.mybut.setOnClickListener(new OnClickListenerImpl());
	}

	private class OnClickListenerImpl implements OnClickListener {
		@Override
		public void onClick(View v) {
			Uri uri = Uri.parse("file:///sdcard/mypic.jpg"); // 设置操作的路径
			Intent intent = new Intent();
			intent.setAction(Intent.ACTION_SEND); // 设置要操作的Action
			intent.putExtra("address", "13956027313"); // 设置短信内容
			intent.putExtra("sms_body", "安徽合肥"); // 设置短信内容
			intent.putExtra(Intent.EXTRA_STREAM, uri); // 设置短信内容
			intent.setType("image/png"); // 短信的MIME类型
			Intent07Activity.this.startActivity(intent); // 执行跳转
		}

	}
}
 

 

七、发送邮件

package com.iflytek.demo;

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

public class Intent08Activity extends Activity {
	/** Called when the activity is first created. */
	private Button mybut = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		this.mybut = (Button) super.findViewById(R.id.mybut); // 取得组件
		this.mybut.setOnClickListener(new OnClickListenerImpl());
	}

	private class OnClickListenerImpl implements OnClickListener {
		@Override
		public void onClick(View v) {
			Intent emailIntent = new Intent(Intent.ACTION_SEND);
			emailIntent.setType("plain/text"); // 设置类型
			String address[] = new String[] { "xdwangiflytek@gmail.com" }; // 邮件地址
			String subject = "xdwang";
			String content = "xdwangiflytek.iteye.com";
			emailIntent.putExtra(Intent.EXTRA_EMAIL, address);
			emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
			emailIntent.putExtra(Intent.EXTRA_TEXT, content);
			Intent08Activity.this.startActivity(emailIntent); // 执行跳转
		}

	}
}
 

 

八、显示通讯录

package com.iflytek.demo;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;

public class Intent09Activity extends Activity {
	/** Called when the activity is first created. */
	private static final int PICK_CONTACT_SUBACTIVITY = 1;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		Uri uri = Uri.parse("content://contacts/people");
		Intent intent = new Intent(Intent.ACTION_PICK, uri);
		super.startActivityForResult(intent, PICK_CONTACT_SUBACTIVITY);
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		switch (requestCode) {
		case PICK_CONTACT_SUBACTIVITY:

		}
	}

}
 

 

九、调用ContentProvider

package com.iflytek.demo;

import android.app.Activity;
import android.content.ContentUris;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.Toast;

public class Intent10Activity extends Activity {
	/** Called when the activity is first created. */
	private static final int PICK_CONTACT_SUBACTIVITY = 1;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		Uri uri = Uri.parse("content://contacts/people");
		Intent intent = new Intent(Intent.ACTION_PICK, uri);
		super.startActivityForResult(intent, PICK_CONTACT_SUBACTIVITY);
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		super.onActivityResult(requestCode, resultCode, data);
		switch (requestCode) {
		case PICK_CONTACT_SUBACTIVITY:
			Uri ret = data.getData(); // 接收返回的数据
			String phoneSelection = ContactsContract.CommonDataKinds.Phone.CONTACT_ID
					+ "=?"; // 设置查询条件
			String[] phoneSelectionArgs = { String.valueOf(ContentUris
					.parseId(ret)) }; // 返回的ID
			Cursor c = super.managedQuery(
					ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
					phoneSelection, phoneSelectionArgs, null);
			StringBuffer buf = new StringBuffer();
			buf.append("电话号码是:");
			for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
				buf.append(
						c.getString(c
								.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)))
						.append("、");
			}
			Toast.makeText(this, buf, Toast.LENGTH_LONG).show();
		}
	}

}

 添加读取权限

 

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

 

十、创建选择器(打开图库)

Intent11Activity.java

package com.iflytek.demo;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;

public class Intent11Activity extends Activity {
	private ImageButton mybut = null;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		this.mybut = (ImageButton) super.findViewById(R.id.mybut);
		this.mybut.setOnClickListener(new OnClickListenerImpl());
	}

	private class OnClickListenerImpl implements OnClickListener {

		@Override
		public void onClick(View v) {
			Intent intent = new Intent();
			intent.setAction(Intent.ACTION_GET_CONTENT);
			intent.setType("image/*");
			Intent11Activity.this.startActivity(Intent.createChooser(intent,
					"选择图片浏览工具"));
		}

	}
}
 

 

ImageViewActivity.java

package com.iflytek.demo;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;

public class ImageViewActivity extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setTitle("查看图片");
		ImageView img = new ImageView(this);
		img.setImageResource(R.drawable.ic_launcher);
		super.setContentView(img);
	}
}
 

 

 

  • 大小: 33.9 KB
分享到:
评论

相关推荐

    Android Intent 组件通信与广播消息

    Android组件通信与广播消息,Intent与Intent-filter详解

    Android组件间通信--深入理解Intent与IntentFilter

    本篇文章是对Android组件间通信Intent与IntentFilter进行了详细的分析介绍,需要的朋友参考下

    Android高级编程--源代码

    上架时间:2010-7-1 出版日期:2010 年6月 开本:16开 页码:398 版次:1-1 内容简介  android提供一个开放的开发环境,为针对移动设备编写创新应用程序带来了激动人心的新机遇。作为使用androidsdk构建这些应用...

    Android组件间通信库EventBus

    Android组件间通信库,代替Intent和BroadcastReceiver,简单易用,源码以及jar提供下载

    Android应用核心Intent

    Android应用核心Intent

    新版Android开发教程.rar

    Android SDK tools included in Android 1.1 SDK, Release 1. Supported Supported Supported Supported Operating Operating Operating Operating Systems Systems Systems Systems • Windows XP (32-bit) or ...

    Android自学视频教程 part1

    第1篇为入门篇,主要包括Android入门、搭建Android开发环境、认识Android模拟器、剖析Android程序、Android常用组件的使用、掌握布局管理器、Android程序调试与错误处理、Activity的使用和使用Intent进行通信等内容...

    六、组件通信与广播消息-Android开发与实践

    了解使用Intent进行组件通信的原理 掌握使用Intent启动Activity的方法 掌握获取Activity返回值的方法 了解Intent过滤器的原理与匹配机制 掌握发送和接收广播消息的方法

    android大作业-安卓音乐播放器+源代码+文档说明+演示视频

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    Android组件间通信–深入理解Intent与IntentFilter

    Understanding Intent and IntentFilter–理解Intent和IntentFilterIntent(意图)在Android中是一个十分重要的...Intent和IntentFilter是Android和一种消息通信机制,可以让系统的组件之间进行通信。信息的载体就是Int

    安卓移动应用开发:Intent与组件通信实现页面跳转功能实现

    本次实验主要是显式Intent的使用方法以及如何通过显式Intent在不同的Activity之间实现跳需要注意的: - 显式Intent是指明了跳转目标的Intent对象。可以通过指明目标Activity的包名、类名或Intent的构造函数等方式来...

    Android自学视频教程 part2

    第1篇为入门篇,主要包括Android入门、搭建Android开发环境、认识Android模拟器、剖析Android程序、Android常用组件的使用、掌握布局管理器、Android程序调试与错误处理、Activity的使用和使用Intent进行通信等内容...

    Android 系统开发技术课程设计 实验任务书及实验报告

    实验1构建Android开发环境和Android应用程序 实验2基本视图组件的使用(一) 实验3:基本视图组件的使用(二) 实验4:布局管理器 实验5:Intent、Activity应用 实验6:基本视图组件的使用(三) 实验7 音乐播放器 ...

    Android应用开发详解pdf.pdf

     第二篇 技术篇第6章 Android组件之间的信使IntentAndroid 组件之间的信使Intent,讲述了Intent对象及其属性、Intent的实现策略和Intent的常见应用  第7章 Android Service组件Android Service组件,讲述了...

    基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip

    还学习了android的一些基本组件,例如:id,控件的唯一表示符,在同一个XML文件中不可重复,相当于身份证的作用,课用来寻找并且绑定此控件;layout_width以及layout_height,分别设置view的宽高;gravity指定当文本...

    Android核心技术与实例详解 PDF扫描版

    第二篇介绍了Android平台的高级知识 包括消息与广播服务 网络数据处理 手机通信功能 桌面组件 多媒体采集 Google服务及3D程序开发等;第三篇则对三个真实案例的开发步骤进行详细介绍 逐步向读者讲解Android手机应用...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--android root下禁用组件 |--android 判断网络状态 |--android 对话框样式 |--android 开机启动 |--android 挪动dialog的位置 |--android 控制对话框位置 |--android 根据uri获取路径 |--android 模拟器错误 |--...

    java8看不到源码-android-security-guides:android-security-guides

    中间人,缩写为(MITM),是攻击者试图拦截客户端和服务器之间通信的地方。 它使攻击者可以完全控制正在传递的敏感数据并以他们想要的任何方式操纵它。 在这种攻击中,发送方和接收方不知道他们正在被监控或他们的...

    Android开发案例驱动教程 配套代码

    第1章 Android操作系统概述 1 1.1 Android历史介绍 1 1.2 Android架构 1 1.3 Android平台介绍 2 1.4 现有智能手机操作系统比较 4 第2章 Android开发环境搭建 5 2.1 Eclipse和ADT插件 5 2.1.1 Eclipse安装 5 ...

Global site tag (gtag.js) - Google Analytics