Android学习笔记_SIM卡介绍

Android学习笔记_SIM卡介绍
Android学习笔记_SIM卡介绍

Android学习笔记_SIM卡介绍

一、判断SIM卡属于哪个移动运营商

1、第一种方法:获取手机的IMSI码,并判断是中国移动\中国联通\中国电信

TelephonyManager telManager = (TelephonyManager)

getSystemService(Context.TELEPHONY_SERVICE);

/**获取SIM卡的IMSI码

* SIM卡唯一标识:IMSI 国际移动用户识别码(IMSI:International Mobile Subscriber Identification Number)是区别移动用户的标志,

* 储存在SIM卡中,可用于区别移动用户的有效信息。IMSI由MCC、MNC、MSIN 组成,其中MCC为移动国家号码,由3位数字组成,

* 唯一地识别移动客户所属的国家,我国为460;MNC为网络id,由2位数字组成,

* 用于识别移动客户所归属的移动网络,中国移动为00,中国联通为01,中国电信为03;MSIN为移动客户识别码,采用等长11位数字构成。

* 唯一地识别国内GSM移动通信网中移动客户。所以要区分是移动还是联通,只需取得SIM卡中的MNC字段即可

*/String imsi = telManager.getSubscriberId();

if(imsi!=null){

if(imsi.startsWith("46000") || imsi.startsWith("46002")){//因为移动网络编号46000下的IMSI已经用完,所以虚拟了一个46002编号,134/159号

段使用了此编号

//中国移动

}else if(imsi.startsWith("46001")){

//中国联通

}else if(imsi.startsWith("46003")){

//中国电信

}

}

2、第二种方法:

TelephonyManager telManager = (TelephonyManager)

getSystemService(Context.TELEPHONY_SERVICE);

String operator = telManager.getSimOperator();

if(operator!=null){

if(operator.equals("46000") || operator.equals("46002")){

//中国移动

}else if(operator.equals("46001")){

//中国联通

}else if(operator.equals("46003")){

//中国电信

}

}

二、从SIM卡中获取联系人信息

1、可以通过内容提供者进行访问,下面是主要代码。

Uri uri = Uri.parse("content://icc/adn");

String[] projection = {"_id", "name", "number"};

Cursor cursor = managedQuery(uri, projection, null, null, "name"); if(cursor!=null){

while(cursor.moveToNext()){

String name = cursor.getString(cursor.getColumnIndex("name"));

String phone = cursor.getString(cursor.getColumnIndex("number"));

}

}

/*在文件AndroidManifest.xml中添加权限

Android系统内部通过Contentprovider对外共享Sim卡存放的联系人等信息,你可以通过操作Contentprovider来实现Sim卡信息的添删改查操作。*/

2、完整代码如下:

package com.android.internal.telephony;

import android.content.ContentProvider;

import android.content.UriMatcher;

import android.content.ContentValues;

import com.android.internal.database.ArrayListCursor;

import android.database.Cursor;

import https://www.360docs.net/doc/5611938267.html,.Uri;

import android.os.SystemProperties;

import android.os.RemoteException;

import android.os.ServiceManager;

import android.text.TextUtils;

import android.util.Log;

import java.util.ArrayList;

import java.util.List;

import com.android.internal.telephony.IccConstants;

import com.android.internal.telephony.AdnRecord;

import com.android.internal.telephony.IIccPhoneBook;

public class IccProvider extends ContentProvider {

private static final String TAG = "IccProvider";

private static final boolean DBG = false;

private static final String[] ADDRESS_BOOK_COLUMN_NAMES = new String[] {

"name", "number" };

private static final int ADN = 1;

private static final int FDN = 2;

private static final int SDN = 3;

private static final String STR_TAG = "tag";

private static final String STR_NUMBER = "number";

private static final String STR_PIN2 = "pin2";

private static final UriMatcher URL_MATCHER = new UriMatcher(

UriMatcher.NO_MATCH);

static {

URL_MATCHER.addURI("icc", "adn", ADN);

URL_MATCHER.addURI("icc", "fdn", FDN);

URL_MATCHER.addURI("icc", "sdn", SDN);

}

private boolean mSimulator;

@Override

public boolean onCreate() {

String device = SystemProperties.get("ro.product.device");

if (!TextUtils.isEmpty(device)) {

mSimulator = false;

} else {

//simulator

mSimulator = true;

}

return true;

}

@Override

public Cursor query(Uri url, String[] projection, String selection, String[] selectionArgs, String sort) {

ArrayList results;

if (!mSimulator) {

switch (URL_MATCHER.match(url)) {

case ADN:

results = loadFromEf(IccConstants.EF_ADN);

break;

case FDN:

results = loadFromEf(IccConstants.EF_FDN);

break;

case SDN:

results = loadFromEf(IccConstants.EF_SDN);

break;

default:

throw new IllegalArgumentException("Unknown URL " + url);

}

} else {

//Fake up some data for the simulator

results = new ArrayList(4);

ArrayList contact;

contact = new ArrayList();

contact.add("Ron Stevens/H");

contact.add("512-555-5038");

results.add(contact);

contact = new ArrayList();

contact.add("Ron Stevens/M");

contact.add("512-555-8305");

results.add(contact);

contact = new ArrayList();

contact.add("Melissa Owens");

contact.add("512-555-8305");

results.add(contact);

contact = new ArrayList();

contact.add("Directory Assistence");

contact.add("411");

results.add(contact);

}

return new ArrayListCursor(ADDRESS_BOOK_COLUMN_NAMES, results);

}

@Override

public String getType(Uri url) {

switch (URL_MATCHER.match(url)) {

case ADN:

case FDN:

case SDN:

return "vnd.android.cursor.dir/sim-contact";

default:

throw new IllegalArgumentException("Unknown URL " + url); }

}

@Override

public Uri insert(Uri url, ContentValues initialValues) { Uri resultUri;

int efType;

String pin2 = null;

if (DBG)

log("insert");

int match = URL_MATCHER.match(url);

switch (match) {

case ADN:

efType = IccConstants.EF_ADN;

break;

case FDN:

efType = IccConstants.EF_FDN;

pin2 = initialValues.getAsString("pin2");

break;

default:

throw new UnsupportedOperationException("Cannot insert into URL: " + url);

}

String tag = initialValues.getAsString("tag");

String number = initialValues.getAsString("number");

boolean success = addIccRecordToEf(efType, tag, number, pin2);

if (!success) {

return null;

}

StringBuilder buf = new StringBuilder("content://im/");

switch (match) {

case ADN:

buf.append("adn/");

break;

case FDN:

buf.append("fdn/");

break;

}

//TODO: we need to find out the rowId for the newly added record

buf.append(0);

resultUri = Uri.parse(buf.toString());

/** // notify interested parties that an insertion happened

* getContext().getContentResolver().notifyInsert( resultUri, rowID, * null);

*/

return resultUri;

}

private String normalizeValue(String inVal) {

int len = inVal.length();

String retVal = inVal;

if (inVal.charAt(0) == '\'' && inVal.charAt(len - 1) == '\'') { retVal = inVal.substring(1, len - 1);

}

return retVal;

}

@Override

public int delete(Uri url, String where, String[] whereArgs) {

int efType;

if (DBG)

log("delete");

int match = URL_MATCHER.match(url);

switch (match) {

case ADN:

efType = IccConstants.EF_ADN;

break;

case FDN:

efType = IccConstants.EF_FDN;

break;

default:

throw new UnsupportedOperationException("Cannot insert into URL: " + url);

}

//parse where clause

String tag = null;

String number = null;

String pin2 = null;

String[] tokens = where.split("AND");

int n = tokens.length;

while (--n >= 0) {

String param = tokens[n];

if (DBG)

log("parsing '" + param + "'");

String[] pair = param.split("=");

if (pair.length != 2) {

Log.e(TAG, "resolve: bad whereClause parameter: " + param); continue;

}

String key = pair[0].trim();

String val = pair[1].trim();

if (STR_TAG.equals(key)) {

tag = normalizeValue(val);

} else if (STR_NUMBER.equals(key)) {

number = normalizeValue(val);

} else if (STR_PIN2.equals(key)) {

pin2 = normalizeValue(val);

}

}

if (TextUtils.isEmpty(tag)) {

return 0;

}

if (efType == FDN && TextUtils.isEmpty(pin2)) {

return 0;

}

boolean success = deleteIccRecordFromEf(efType, tag, number, pin2); if (!success) {

return 0;

}

return 1;

}

@Override

public int update(Uri url, ContentValues values, String where,

String[] whereArgs) {

int efType;

String pin2 = null;

if (DBG)

log("update");

int match = URL_MATCHER.match(url);

switch (match) {

case ADN:

efType = IccConstants.EF_ADN;

break;

case FDN:

efType = IccConstants.EF_FDN;

pin2 = values.getAsString("pin2");

break;

default:

throw new UnsupportedOperationException("Cannot insert into URL: " + url);

}

String tag = values.getAsString("tag");

String number = values.getAsString("number");

String newTag = values.getAsString("newTag");

String newNumber = values.getAsString("newNumber");

boolean success = updateIccRecordInEf(efType, tag, number, newTag, newNumber, pin2);

if (!success) {

return 0;

}

return 1;

}

private ArrayList loadFromEf(int efType) { ArrayList results = new ArrayList(); List adnRecords = null;

if (DBG)

log("loadFromEf: efType=" + efType);

try {

IIccPhoneBook iccIpb = IIccPhoneBook.Stub

.asInterface(ServiceManager.getService("simphonebook")); if (iccIpb != null) {

adnRecords = iccIpb.getAdnRecordsInEf(efType);

}

} catch (RemoteException ex) {

//ignore it

} catch (SecurityException ex) {

if (DBG)

log(ex.toString());

}

if (adnRecords != null) {

//Load the results

int N = adnRecords.size();

if (DBG)

log("adnRecords.size=" + N);

for (int i = 0; i < N; i++) {

loadRecord(adnRecords.get(i), results);

}

} else {

//No results to load

Log.w(TAG, "Cannot load ADN records");

results.clear();

}

if (DBG)

log("loadFromEf: return results");

return results;

}

private boolean addIccRecordToEf(int efType, String name, String number, String pin2) {

if (DBG)

log("addIccRecordToEf: efType=" + efType + ", name=" + name

+ ", number=" + number);

boolean success = false;

//TODO: do we need to call getAdnRecordsInEf() before calling

//updateAdnRecordsInEfBySearch()? In any case, we will leave

//the UI level logic to fill that prereq if necessary. But

//hopefully, we can remove this requirement.

try {

IIccPhoneBook iccIpb = IIccPhoneBook.Stub

.asInterface(ServiceManager.getService("simphonebook"));

if (iccIpb != null) {

success = iccIpb.updateAdnRecordsInEfBySearch(efType, "", "", name, number, pin2);

}

} catch (RemoteException ex) {

//ignore it

} catch (SecurityException ex) {

if (DBG)

log(ex.toString());

}

if (DBG)

log("addIccRecordToEf: " + success);

return success;

}

private boolean updateIccRecordInEf(int efType, String oldName, String oldNumber, String newName, String newNumber, String pin2) { if (DBG)

log("updateIccRecordInEf: efType=" + efType + ", oldname="

+ oldName + ", oldnumber=" + oldNumber + ", newname="

+ newName + ", newnumber=" + newNumber);

boolean success = false;

try {

IIccPhoneBook iccIpb = IIccPhoneBook.Stub

.asInterface(ServiceManager.getService("simphonebook"));

if (iccIpb != null) {

success = iccIpb.updateAdnRecordsInEfBySearch(efType, oldName, oldNumber, newName, newNumber, pin2);

}

} catch (RemoteException ex) {

//ignore it

} catch (SecurityException ex) {

if (DBG)

log(ex.toString());

}

if (DBG)

log("updateIccRecordInEf: " + success);

return success;

}

private boolean deleteIccRecordFromEf(int efType, String name, String number, String pin2) {

if (DBG)

log("deleteIccRecordFromEf: efType=" + efType + ", name=" + name + ", number=" + number + ", pin2=" + pin2);

boolean success = false;

try {

IIccPhoneBook iccIpb = IIccPhoneBook.Stub

.asInterface(ServiceManager.getService("simphonebook"));

if (iccIpb != null) {

success = iccIpb.updateAdnRecordsInEfBySearch(efType, name,

number, "", "", pin2);

}

} catch (RemoteException ex) {

//ignore it

} catch (SecurityException ex) {

if (DBG)

log(ex.toString());

}

if (DBG)

log("deleteIccRecordFromEf: " + success);

return success;

}

/*** Loads an AdnRecord into an ArrayList. Must be called with mLock held. *

* @param record

* the ADN record to load from

* @param results

* the array list to put the results in

*/

private void loadRecord(AdnRecord record, ArrayList results) {

if (!record.isEmpty()) {

ArrayList contact = new ArrayList(2);

String alphaTag = record.getAlphaTag();

String number = record.getNumber();

if (DBG)

log("loadRecord: " + alphaTag + ", " + number);

contact.add(alphaTag);

contact.add(number);

results.add(contact);

}

}

private void log(String msg) {

Log.d(TAG, "[IccProvider] " + msg);

}

}

三、删除呼叫记录

1、加入权限

在文件AndroidManifest.xml中添加权限

2、设置内容提供者

负责存放呼叫记录的内容提供者源码在ContactsProvider项目下:

源码路径:com\android\providers\contacts\CallLogProvider.java

使用到的数据库在:

/data/data/com.android.providers.contacts/databases/contacts2.db

表名:calls

呼叫记录有三种类型:

来电:CallLog.Calls.INCOMING_TYPE (常量值:1)

外拔:CallLog.Calls.OUTGOING_TYPE(常量值:2)

3、删除指定号码的来电或未接呼叫记录:

IncomingCallLogContentObserver observer = new IncomingCallLogContentObserver(new Handler());

observer.setNumber("5554");

getContentResolver().registerContentObserver(CallLog.Calls.CONTENT_UR I, true, observer);

private class IncomingCallLogContentObserver extends ContentObserver { private String number;

public IncomingCallLogContentObserver(Handler handler){

super(handler);

}

public void setNumber(String number){

this.number = number;

}

public void onChange(boolean paramBoolean){

ContentResolver contentResolver = getContentResolver();

if(number!=null){

Uri localUri = CallLog.Calls.CONTENT_URI;

Cursor cursor = contentResolver.query(localUri, new String[]{"_id"}, "number=? AND (type=1 OR type=3)",

new String[]{number}, "_id desc limit 1");

if(cursor.moveToFirst()){

contentResolver.delete(localUri, "_id=?", new

String[]{cursor.getString(0)});

}

cursor.close();

}

contentResolver.unregisterContentObserver(this);

}

}

基于安卓的大学生记账管理系统的设计与实现-外文翻译译文和原文

基于安卓的大学生记账管理系统的设计与实现-外文翻译译 文和原文 毕业设计外文文献翻译 院系: 计算机与信息工程学院年级专业: 12软件工程(金融服务)2 姓名: 学号: An Analysis of Personal Financial Lit Among 附件: College Students Among College Students 指导老师评语: 指导教师签名: 年月日 大学生个人理财知识分析 大学生个人理财知识分析 这项研究调查了924名大学生审视自己的个人财务知识;调查了学生的财务知识与学生的特性之间的关系,和理财知识对学生的意见和决定的影响。结果表明,参与者回答问题的正确性为53,。所调查的人包括非经营性专业、妇女、在下层阶级行列的学生、30岁以下并且很少有工作经验的人、知识水平较低者。懂得较少财务知识的学生往往有错误的观点和作出不正确的决定。结论是:大学生不太了解个人理财。低的财务知识水平会限制他们做出明智决策的能力。 I. 介绍 管理个人财务的能力在当今世界已经变得越来越重要。人们必须计划为他们的退休和子女的教育长期投资。他们还必须决定短期储蓄和借贷一个假期,向下支付

房子,汽车贷款和其他大件物品。此外,他们还必须管理自己的医疗保险和人寿保险的需求。 不幸的是,研究表明,美国人有个人认识不足财政(EBRI,1995年,毕马威会计师事务所,1995年; PSRA,1996年,1997年,奥本海默基金/女孩公司,1997年;先锋集团/货币杂志,1997年)。他们未能作出正确决策因为他们还没有收到良好的个人理财教育(HSR,1993年,希拉,1993;奥尼尔,1993年)。 这项研究有三个目的。首先,它提供大学生个人理财素养的证据。其次,它会检查为什么一些大学生相对比别人有更多的理财知识。该分析可以帮助我们识别出大学生所拥有决定能力水平的因素。第三个目的是检查学生的知识如何影响他/她的意见和个人财务问题上的决定。 本文的结构安排如下。第二部分回顾了以前对金融知识的研究。第三部分是讨论方法。第四部分是提出的结果。第五部分总结全文。 II. 文献回顾 大部分以前的研究都是由在金融服务行业的从业人员进行。他们专注于资金管理和投资有关的问题。这个重点与会计师财务策划师的调查结果一致,说明这些问题是个人理财规划的重要领域(NEFE,1993-1996)。这些研究结果表明,参与的调查者回答调查问题的正确率普遍只有不到60,。 此前高中生的研究均发现,他们在个人财务的基本知识上未受到良好的教育,并且知识贫乏(巴肯,1967; CFAJAMEX,1991; HSR,1993; Langrehr,1979; NAEP,1979)。在对来自63所学校的1509高中学生的调查研究中,曼德尔(1997)报告了一个平均正确的比分,57,在收入、资金管理、储蓄、投资和消费等领域。他的结论是:学生们离开学校时没有做出关键决策影响他们生活的能力。 难道成年人对个人理财和投资有一个很好的控制,几个结果研究表明,他们并 1

Android开发的核心知识

想要学习移动应用的开发,除了必备的知识要掌握好之外,更多的是要掌握一些核心的基础知识,并且是能够起到关键性作用的知识点,必须是要了解清楚,如果你也是在学习Android开发,下面的核心基础或者对你有一定的帮助! 1.ListView的引入 为什么要采用listview?其实是在数据量过于庞大时,传统的存储方式它是会占用机器大量内存,最终导致OOM异常(内存溢出),listview的出现将会是有效的解决这个弊端的出现。 重点来了listview如何使用呢? res/layout布局文件中定义listview src的java代码里面关心控件findviewbyid(R.id.listview); 创建适配器对象,适配器继承baseAdapter接口 2.构造方法 getCount();控制listview的条目数 getView();得到当前条目视图 View.inflate();布局填充器 设置适配器:setAdapter(adapter); 设置listview列表项的点击事件:setOnClickLinsstener();

通知listview更新数据:adapter.notifyDataSetChanged(); 3.对话框的使用 *普通对话框 *单选对话框 *多选对话框 *进度对话框 *进度条对话框 *自定义对话框 布局填充器:Viewview=View.inflate(Context,https://www.360docs.net/doc/5611938267.html,yout.dialog,null); 核心API:dialog.setView(view); 4.常见的一些适配器的使用 *数组适配器:ArrayAdapter *简单适配器:SimpleAdapter 5.数据库的常见的事务 为什么需要需要定义数据库事务?最主要的还是为了保证多条操作语句同步执行 6.数据库事务执行流程 db.beginTransaction();开启事务 db.setTransactionSuccessful();设置事务执行成功 db.endTransaction();结束事务 7.样式和主题 样式的作用在单独的UI控件上面 主题的作用它是在activity或者application上 以上的这些功能控件、数据库等这些是开发中必备的功能,在开发中只要这些基本的核心知识都掌握了,那么这对你接下里的进一步开发是比较有帮助的。

基于安卓的个人记账本的设计与实现

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊ 目录 一、设计题目 (1) 二、设计目的 (1) 三、设计分析 (1) 四、总体设计 (2) 五、详细设计 (3) 六、系统测试 (10) 七、结论 (13)

┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊一、设计题目 基于安卓的个人记账本的设计与实现 二、设计目的 随着经济社会的高速发展,人们的生活水平也在飞速的提高,同时人们的收入和消费水平也得到了很大的提升,也从过去的单一输入和消费变成了今天的多元化收入和消费模式。尤其是我们青年人,对现在新型消费有非常高的热情,但是这样给在高速发展的消费经济情况下的我们带来了一些意想不到的负面影响,比较突出的一点就是当前80、90后的一代年轻人只懂得消费和挣钱,不能很好的理财,这给我们的物质生活带来了不少的麻烦。所以不同功能的个人理财系统便由此产生了,不论是PC版还是手持设备版都有。 自2007年google公司的android系统产生以来,在这几年中,飞速的发展,现在已经超过了过去看似很完美的塞班系统,成为全球最大的手机及手持设备系统之一。Android操作系统凭借着自己开放的平台允许任何移动终端厂商加入到Android联盟中,从而使得越来越多的用户倾向于选择操作系统为Android的终端设备。选择设计基于Android平台的软件,毫无疑问能覆盖更多的受众,等到各大厂商的青睐。 三、设计分析 通过对实际需求的调研,确定本系统由五个功能模块组成,即用户记账、消费预算、账户转账、消费收入曲线图表、系统设置。系统功能模块图如图2.1所示。 各模块的具体功能如下所述: 1)用户记账:用户根据日期记录某天消费情况和收入情况 2)消费预算:在月初系统会提示用户进行当月消费预算,可以根据消费类型预计当月的消费预算金额 3)账户转账:在用户不同账户之间实现金额的转移 4)消费收入曲线图表:根据用户选择产生消费、收入和预算的走势图,走势图一眼分析出消费、收入和预算之间的关系 5)系统设置:设置本系统中的一些账户和收入以及消费类型,系统版本信息,软件更新等等。

Android应用开发基本知识点汇总

Android应用开发基本知识点汇总 Activity 一生命周期 4种状态 running / paused / stopped / killed 生命周期 Activity启动 onCreate -> onStart -> onResume 点Home返回主界面 onPause -> onStop 再次回到原Activity onRestart -> onStart -> onResume 退出Activity onPause -> onStop -> onDestroy 进程优先级前台/可见/服务/后台/空 二任务栈 三启动模式 standard singleTop 栈顶复用 singleTask 栈内复用 singeInstance 四scheme跳转协议 服务器可以定制化告诉App跳转哪个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面 Fragment 一第五大组件 为什么是第五大组件 Fragment相对Activity更节省内存,切换更舒适Fragment加载到Activity的两种方式 静态加载xml 动态加载fragmentTransaction.add(id, fragment, “name”); .commit; FragmentPagerAdapter与FragmentStatePagerAdapter

FragmentStatePagerAdapter在切换时回收内存,适合页面较多的情况FragmentPagerAdapter并没有回收内存,只是detach了Activity 二生命周期 onAttach -> onCreate -> onCreateView -> onViewCreated -> onActivityCreated -> onStart -> onResume -> onPause -> onStop -> onDestroyView -> onDestroy -> onDetach 先创建Activity后创建Fragment,先销毁Fragment后销毁Activity 三Fragment之间的通信 Fragment调用Activity getActivity Activity调用Fragment 接口回调 Fragment调用Fragment方法findFragmentById 四FragmentManager replace add remove Service 一应用场景,与Thread区别 Service是什么后台长时间运行,没有用户界面,运行在主线程,不能有耗时操作 Service与Thread区别 Activity难以与Thread交互,尤其当Activity销毁以后 二开启Service的两种方式 StartService onCreate -> onStartCommand -> onBind -> onDestroy onStartCommand return START_STICKY;

基于安卓的个人记账本的设计与实现

目录 一、设计题目 (1) 二、设计目的 (1) 三、设计分析 (1) 四、总体设计 (2) 五、详细设计 (3) 六、系统测试 (10) 七、结论 (13)

一、设计题目 基于安卓的个人记账本的设计与实现 二、设计目的 随着经济社会的高速发展,人们的生活水平也在飞速的提高,同时人们的收入和消费水平也得到了很大的提升,也从过去的单一输入和消费变成了今天的多元化收入和消费模式。尤其是我们青年人,对现在新型消费有非常高的热情,但是这样给在高速发展的消费经济情况下的我们带来了一些意想不到的负面影响,比较突出的一点就是当前80、90后的一代年轻人只懂得消费和挣钱,不能很好的理财,这给我们的物质生活带来了不少的麻烦。所以不同功能的个人理财系统便由此产生了,不论是PC版还是手持设备版都有。 自2007年google公司的android系统产生以来,在这几年中,飞速的发展,现在已经超过了过去看似很完美的塞班系统,成为全球最大的手机及手持设备系统之一。Android操作系统凭借着自己开放的平台允许任何移动终端厂商加入到Android联盟中,从而使得越来越多的用户倾向于选择操作系统为Android的终端设备。选择设计基于Android平台的软件,毫无疑问能覆盖更多的受众,等到各大厂商的青睐。 三、设计分析 通过对实际需求的调研,确定本系统由五个功能模块组成,即用户记账、消费预算、账户转账、消费收入曲线图表、系统设置。系统功能模块图如图2.1所示。 各模块的具体功能如下所述: 1)用户记账:用户根据日期记录某天消费情况和收入情况 2)消费预算:在月初系统会提示用户进行当月消费预算,可以根据消费类型预计当月的消费预算金额 3)账户转账:在用户不同账户之间实现金额的转移 4)消费收入曲线图表:根据用户选择产生消费、收入和预算的走势图,走势图一眼分析出消费、收入和预算之间的关系 5)系统设置:设置本系统中的一些账户和收入以及消费类型,系统版本信息,软件更新等等。

Android手机记账APP

Android手机记账APP

目录 APP需求分析 1 Android手机开发背景 2 Android Studio项目文件构成 3 应用所涉及的Android相关应用方法4

需求分析 01方便人们日常生活 02减轻人们对日常琐事的记忆所造成的脑力负 担 03有助于人们有效的管理自己的钱财 04使人们的生活变得高效、轻松

Android手机开发背景Android一词原本义为“机器人”,是在2007年推出的基于Linux的手机平台的名字。

Android版本的更新 Android 1.5Cupcake(纸杯蛋糕):09年4月发布 的版本。 Android1.6Do nut(甜甜圈):09年9月发布的版 本。 Android2.0/2.1Eclair(松饼):09年10月发布的版 本。 Android2.2Fro yo(冻酸奶):10年5月发布的版本 。 Android2.3X Gingerbread(姜饼):10年12月发布 的版本。 Android3.0Honeycomb:11年2月发布的版本。 Android4.0Ice Cream Sandwich:11年10月在中国 香港发布的版本。 Android4.1Jelly Bean:12年6月公布的版本。 Android5.0Key Lime Pie:还未确定。Android1.1 :08年9月发布的Android第一版本。

Android平台介绍 Android平台是由操作系统、中间件以及用户界 面所组成的第一个为移动终端定制打造的一款 真正的开放完整的手机移动开发软件平台。 Android平台具有触摸屏和上网功能,使用者可 以在手机上查看E-mail、查询网上信息以及播 放网上视频等。

复习材料《Android移动应用开发技术》

1、关于android进程,说法不正确的是( B ) A、组件运行所在的进程,是由androidManifest.xml决定,它可以指定该组件运行于哪个进程。 B、背景进程是不为用户所见的Activity,但是还会有可能被用户看到,所以它不能被杀死 C、当急需内存时,android会决定优先关闭那些空闲的进程 D、可视进程一般不会不被系统所杀死 2、Matrix类的作用( A ) A、可以存储缩小或放大比列 B、存储文件中的图片信息 C、存储资源中的图片信息 D、存储内存中的图片信息 3、关于主题的说法,错误的是( D ) A、它是属性集合 B、它可以在程序中来设置 C、它通常用于一个Activity或所有Activity上 D、它可以用于单个TextView上 4、setOnTouchEvent 设置返回值为true 和 false有何区别?以下说法较准确是( C ) A、没有区别,都能对事件进行监听 B、设置为true时只能在移动时获得一次监听事件,false则可以多次 C、设置为false是,在处理一次监听事件后,系统将抛弃该次事件 D、返回true表示这个消息已经被处理结束,后续的handler不再接收到这个消息 二、开发技术设计与应用能力部分 注:以下程序均是相关程序或小项目的实现代码,根据每个程序或项目的特性,完成程序空缺部分的内容,使其实现。具体程序代码注释省略。 图1 图2 图3 图4 1)电话实现[主界面如图1] 程序描述:完成手机打电话功能。 public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/5611938267.html,yout.activity_main); Button btn_call = (Button)this.findViewById(R.id.btn_call); btn_call.setOnClickListener(new btnCall()); } private class btnCall implements OnClickListener (1) { public void onClick(View v) { // TODO Auto-generated method stub EditText et_number = (EditText) MainActivity.this.findViewById(R.id.et_number); String s_number = et_number.getText().toString().trim(); (2) Intent i_call = new Intent(); i_call.setAction(Intent.ACTION_CALL(3)); i_call.setData(Uri.parse("tel:"+s_number)); startActivity(i_call); (4) } } } 2)动画实现[主界面如图2] 程序描述:手机屏幕触摸后演示动画,假设XML文件已经设置好,id资源为:R.drawable.panda public class MainActivity extends Activity { ImageView iv_action; AnimationDrawable ad_action; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.360docs.net/doc/5611938267.html,yout.activity_main); iv_action = (ImageView)this.findViewById(R.id.iv_action); iv_action.setBackgroundResource(5)(R.drawable.panda); ad_action = (AnimationDrawable) iv_action.getBackground(); } public boolean onTouchEvent(MotionEvent event) { ad_action.start();(6) return super.onTouchEvent(event); } } 3)撕衣服游戏实现 项目描述:划动屏幕时完成撕衣服效果,并产生撕衣服声音(sound.mp3) public class MainActivity extends Activity { ImageView iv_upper; ImageView iv_below;

ANDROID实训心得体会

项目总结 时间过的好快,为期三个月的实训生活即将结束了,每一次的实训我们都受益匪浅,我 们学到的不仅仅是课内还有课外,实训让我们的课内知识得到了巩固,专业知识、编程水平 都有很大的提高,我们非常感谢这次实训。 刚开始二周的高强度的课程安排让我们受益匪浅;接下来的项目实训又让我们可以巩固 了课程。这让我觉得实习生活充实而有意义。 乐淘购物项目和android优化大师,我更好的学习了ui的设计,如何使界面漂亮,美观, 巩固了listview,gridview,的使用,学会了动画进入界面的,和会移动的画廊等等。在这 两个项目中,除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完 成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获 取成功,一种自信心由然而生,这就是工作的乐趣。有时候也需要虚心请教,从别人的身上 真得能学习到不自己没有的东西,每一次的挫折只能使我更接近成功。 音乐播放器项目,我们是七个人组成小组完成的,由组长带领我们,分配任务,每个人, 都发挥自己的长处,更好地去完成任务。对于团队开发来说,团结一致使我深有体会。团队 的合作注重沟通和信任,不能不屑于做小事,永远都要保持亲和诚信,把专业理论运用到具 体实践中,不仅加深我对理论的掌握和 运用,还让我拥有了一次又一次难忘的开发经历,这是也是实训最大的收获。 这次实训对于我以后学习、找工作也真是受益菲浅,在这3个月中让我初步从理性回到 感性的重新认识,也让我初步的认识这个社会,对于以后做人所应把握的方向也有所启发! 相信这些宝贵的经验会成为我今后成功的重要的基石。在此,我非常感谢指导老师和 同学对我的帮助。篇二:android实训报告 通信与电子信息专业实训报告 项目名称:基于android的游戏开发 班级 10通信1班 姓名 学号 指导教师 成绩 实训时间:年月日— 目录 一、实训目的及其意义 (3) 1.1、目的及意义 (3) 1.2、研究现状 (3) 二、实训主要任务、重点及难点 (4) 2.1、任务 (4) 2.2、重点内容及实现途径 (4) 三、实训具体内容及完成的主要工作 (5) 3.1、认识基础开发 (6) 3.2、了解数据存储 (6) 3.3、总体实训过程 (7) 四、实际遇到的困难,解决问题的方法和措施 (8) (一)、所遇问题 (8) (二)、解决方法与措施 (9) 五、心得体会 (9)

Android期末复习题总结

1、Intent的Component属性的作用是什么,如何定义此属性? component(组件),指定Intent的的目标组件的类名称。通常Android会根据Intent 中 包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹 配的目标组件。但是,如果component这个属性有指定的话,将直接使用它指定的组件, 而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。Component属性的作用是用来指定Intent的目标组件的类名称。如果Component这个属性被指定了的话,Intent的其它属性都是可选项,Android 会直接使用Component指定目标组件,而不再执行其它查找过程。 在使用时,需要先创建一个ComponentName对象,然后将它设置成Intent对 象的Component的属性。通过setComponent()、setClass()和setClassName() 三种方法都可以设置组件的名称,通过getComponent()方法则可获得设置项。 2、发送广播时,可以通过sendCatagoryBroadcast()方法将Intent对象发送出去( ). (错) 3、Android是什么?( ) 一种操作系统 4、下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是( ) DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。 5、Android操作系统最早由哪个公司研发?( ) Android公司 6、下列中不属于手持设备的是( ) 机顶盒 7、下列不是手机操作系统的是()。Windows Vista 8、到目前为止,Android操作系统的最高版本是哪个?( )Android L 9、安装Android SDK时,可以通过( )在线安装或离线安装。Android sdk manager 10、开发Android应用程序时,一般使用的计算机语言是( ) 。JAVA 11、E/AndroidRuntime(1099): https://www.360docs.net/doc/5611938267.html,ng.RuntimeException: Unable to instantiate activity ComponentInfo{com.test/com.test.CanvasActivitys}: https://www.360docs.net/doc/5611938267.html,ng.ClassNotFoundException: com.test.CanvasActivitys in loader dalvik.system.PathClassLoader[/data/app/com.test-1.apk] 这段话是程序报错在LogCat中产生的记录,从中可以分析问题的原因可能在哪里?( ) CanvasActivitys类没有在AndroidManifest中正确申明 12、对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android 需要解析的是那些间接Intent,通过解析,将Intent映射给可以处理此Intent的Activity、IntentReceiver或Service (对) Intent 可以传递View对象(错) Intent起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被 调用者之间的解耦(对) 通过Intent可以删除程序(对) 13、下面退出Activity错误的方法是()。System.exit( ) 14、当启动一个Activity并且新的Activity执行完后需要返回到启动它的Activity来执行 的回调函数是( )。startActivityResult() 15、这是一个资源配置文件,下面描述正确的是? ( )这个shape文件是画一条虚线,实 线段5dp,间隔3dp 16、Toast toast = new Toast(this); toast.setText("今天天气不错\n哈哈"); toast.show(); 上面代码的执行结果是什么( )。代码会抛出异常,因为new出的Toast对象不能再使用setText方法来设置提示框文本

基于android个人记账本的设计与开发

基于android个人记账本的设计与开发 摘要 随着智能手机的快速普及,智能手机操作系统市场风生水起。为了让智能手机用户能够随时随地查询互联网所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网以及互联网访问Web网站并处理各种各样的业务。因此,智能手机的应用软件及其需要的服务将有广阔的发展前景。 在如今这个智能手机系统群雄纷争的时候,2008年Google推出了一款名为Android 的开源智能手机操作系统,它采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。这款软件包括了操作系统、用户界面和应用程序,即智能手机工作所需要的全部软件。Android的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此,对于软件从业人员来说,Android平台具有无限的吸引力。 本文就在分析讨论Android手机软件开发技术原理的基础上,开发出能为用户提供更好的基于Android平台的个人记账手机软件。 关键词Java; Android; 记账;智能手机平台

Based on the android personal account the design and development Abstract With the rapid proliferation of smartphones, smart phone operating system market, wind and water. In order for smartphone users to check the Internet anytime, anywhere services provided anefficient way to expand the function of the system will be applied to themobile phone terminal, the mobile phone to Internet access via mobile networks,and variety of Web sites and process business. Therefore, the smart phone applicationsand the need for the service will have broad prospects for development. In today's smart phone system whendisputes warlords, 2008, Google introduced a smart phone called the Androidopen source operating system, which uses Linux kernel, Open Handset Alliance(OHA) members can be free to use and modify the SDK package, the system It hasa good open-source nature of the expansion of. The software includes theoperating system, user interface and applications that need to work smartphones all the software. Android's biggest feature is its open architecture,not only has a very good development and debugging environment, but alsosupports a variety of scalable user experience, including rich graphicalcomponents, multimedia support, and powerful browser. Therefore, for softwareprofessionals is, Android platform has unlimited appeal. In this paper, the analysis anddiscussion Android mobile phone software development technology on the basis ofthe principle, developed to provide users with better platform to the personalcharge basedon Android meteorological software. Key words Java; Android; charge; smartphoneplatform

Android实习报告

合肥工业大学学生自主实习报告 学号: xxx 姓名: xxx 实习单位: 实习时间:2014年6月22-7月5日

一、实习目的: 1、掌握android系统开发的一些常用知识 2、拥有独立解决开发中遇到问题的能力 3、熟悉android软件开发流程并至少做一个android软件项目。 了解现阶段互联网发展主流,了解移动互联网,认识移动互

联网的发展与展望,认识Android,了解基于Android的应用软件开发方法及其商业流程。把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际巩固所学的知识,提高对实际生活的认识,积累经验。使学生在此期间能够初次体会到实际生产中的种种技能与经验,完成一项项目锻炼独立思考及团队合作能力。使学生们进一步加深对所学知识的理解,理论联系实际,巩固所学有关计算机基础理论知识和基本技能,学习有关计算机最新技术方面的应用,增强学生对计算机在社会生活,社会生产中应用的感性认识,深入了解计算机在各个领域中的应用状况。生产实习是学校教学的重要补充部分,是区别于普通学校教育的一个显著特征,是教育教学体系中的一个不可缺少的重要组成部分和不可替代的重要环节。它是与今后的职业生活最直接联系的,学生在生产实习过程中将完成学习到就业的过渡,因此生产实习是培养技能型人才,实现培养目标的主要途径。它不仅是校内教学的延续,而且是校内教学的总结。生产实习一方面巩固了书本上学到的理论知识,另一方面,可获得在书本上不易了解和不易学到的生产现场的实际知识,使我们在实践中得到提高实训环节对于提高学生的综合能力和全面素质具重要意义 二、实习单位:苏州高博培训

基于安卓的个人记账本的设计与实现

基于安卓的个人记账本的设计与实现

目录 一、设计题目 (1) 二、设计目的 (1) 三、设计分析 (1) 四、总体设计 (2) 五、详细设计 (3) 六、系统测试 (10) 七、结论 (13)

一、设计题目 基于安卓的个人记账本的设计与实现 二、设计目的 随着经济社会的高速发展,人们的生活水平也在飞速的提高,同时人们的收入和消费水平也得到了很大的提升,也从过去的单一输入和消费变成了今天的多元化收入和消费模式。特别是我们青年人,对现在新型消费有非常高的热情,可是这样给在高速发展的消费经济情况下的我们带来了一些意想不到的负面影响,比较突出的一点就是当前80、90后的一代年轻人只懂得消费和挣钱,不能很好的理财,这给我们的物质生活带来了不少的麻烦。因此不同功能的个人理财系统便由此产生了,不论是PC 版还是手持设备版都有。 自google公司的android系统产生以来,在这几年中,飞速的发展,现在已经超过了过去看似很完美的塞班系统,成为全球最大的手机及手持设备系统之一。Android操作系统凭借着自己开放的平台允许任何移动终端厂商加入到Android联盟中,从而使得越来越多的用户倾向于选择操作系统为Android的终端设备。选择设计基于Android平台的软件,毫无疑问能覆盖更多的受众,等到各大厂商的青睐。

经过对实际需求的调研,确定本系统由五个功能模块组成,即用户记账、消费预算、账户转账、消费收入曲线图表、系统设置。系统功能模块图如图2.1所示。 各模块的具体功能如下所述: 1)用户记账:用户根据日期记录某天消费情况和收入情况 2)消费预算:在月初系统会提示用户进行当月消费预算,能够根据消费类型预计当月的消费预算金额3)账户转账:在用户不同账户之间实现金额的转移 4)消费收入曲线图表:根据用户选择产生消费、收入和预算的走势图,走势图一眼分析出消费、收入和预算之间的关系 5)系统设置:设置本系统中的一些账户和收入以及消费类型,系统版本信息,软件更新等等。

android开发需要掌握的知识点

Android应用程序开发是以Java语言为基础的,所以需要有扎实的Java基础知识。首先熟悉java基本语法,然后熟悉设计模式等。 a) Java基础语法:看下面的《Java知识点列表》 b)设计模式:由于在Android系统的框架层当中,使用了大量的设计模式,如果没有这个方面的知识,对于Android的理解就会大打折扣。设计模式的种类非常之多(设计模式大概有28种,具体请看设计模式系列),一个一个的全部掌握,是不现实的,必须首先掌握面向对象的基础设计原则,有了这些基础原则的支持,理解android容易很多。 有了这些知识,然后再来学习Android开发,一定会事半功倍。 《Java知识点列表》:这些是别人总结,我只是加些说明。 开发环境: 1 Java SDK 下载和安装 2 环境变量的配置(path和classpath) 编程基础: 3. 标识符命名规范 4 Java数据类型 5 运算符 6 分支语句(if,switch) 7 循环语句(for,while) 8 函数的定义方法 只要是个程序员,都懂。语言之间可以融会贯通。 面向对象基础: 向对象的三个基本特征是:封装、继承、多态 9. 面向对象与面向过程语言之间的区别 10 面向对象基本思想(封装) 封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏 11 类的定义方法 12 对象和类的关系 13 对象的创建方法 14 通过对象使用成员变量和成员函数的方法 15 构造函数的作用 16 函数的重载 17 static 的作用 18 this的作用 面向对象高级: 19 面向对象基本思想(继承) 继承:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进

Android面试基础知识总结

1Activity 1.1Activity的概念 是Android应用层开发的四大组件之一,主要负责和用户交互部分,有自己的生命周期,在其上可以布置按钮,文本框等各种控件,简单来说就是Android 的UI部分。 1.2Activity与View的区别 1)Activity是四大组件中唯一一个用来和用户进行交互的组件。可以说 Activity就是android的视图层。 2)如果再细化,Activity相当于视图层中的控制层,是用来控制和管理View 的,真正用来显示和处理事件的实际上是View。 3)每个Activity内部都有一个Window对象, Window对象包含了一个 DecorView(实际上就是FrameLayout),我们通过setContentView给Activity设置显示的View实际上都是加到了DecorView中。 1.3Activity生命周期 1.3.1生命周期主干

1.3.2其他中转方法

1.4Activity启动模式1.4.1四种启动模式

1.4.2配置样例 1.5Activity启动方法 1)在一个Activity中调用startActivity()方法。 直接启动Activity,不带请求码。 2)在一个Activity中调用startActivityForResult()方法。 带请求码启动Activity。 1.6请求码与响应码

2BroadcastReceiver 2.1概念 BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。 2.2应用场景 在Android系统中,广播体现在方方面面: eg: 1.当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动 服务的功能; 2.当锁屏或者点亮屏幕时就会产生一条广播,接收这条广播就可以实现一 些暂停或者开启一些耗电进程的功能。 3.当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做 出提示和保存数据等操作; 4.当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量 低时告知用户及时保存进度; 2.3注册 2.3.1静态注册 2.3.1.1概念 静态注册是在AndroidManifest.xml文件中配置的。 2.3.2动态注册 2.3.2.1概念 动态注册需要在代码中动态的指定广播地址并注册。 2.3.2.2需要注意的事项 RegisterReceiver是android.content.ContextWrapper类中的方法,Activity和Service都继承了ContextWrapper,所以可以直接调用。在实际应

基于android系统的个人记账系统

基于android系统的个人记账系统

目录 第一章前言 (2) 1.1 选题背景及目的 (2) 1.2 国内外研究状况 (3) 1.3 设计和解决方法 (3) 第二章需求分析 (5) 2.1 范围 (5) 2.1.1 系统概述 (5) 2.1.3 文档概述 (5) 2.2 需求概述 (5) 2.2.1 系统目标 (5) 2.2.2 运行环境 (6) 2.2.3 用户的特点 (6) 2.3功能需求 (6) 2.4.1 系统用例图 (7) 2.4.2 系统各项功能描述 (8) 2.5数据 (11) 2.5.1 数据关系ER实体类 (11) 2.6故障处理 (14) 第三章概要设计 (15) 3.1 范围 (15)

3.1.2 系统概述 (15) 3.1.3 文档概述 (15) 3.2 系统结构 (15) 3.2.1 部署图 (15) 3.2.2 类图 (16) 3.4 执行概念 (20) 3.4.1 添加消费信息 (20) 3.4.2 添加消费预算 (21) 3.4.3 用户转账 (22) 3.5 用户界面设计 (23) 3.6系统出错处理 (25) 3.6.1 出错信息 (25) 3.6.2 补救措施 (25) 3.6.3 系统维护 (25) 第四章系统详细设计 (26) 4.1 范围 (26) 4.1.1 系统概述 (26) 4.1.2 文档概述 (26) 4.2 系统结构 (26) 4.3 详细设计说明 (27) 4.3.1 系统功能模块 (27) 4.3.2 实体类 (28)

4.4 接口设计 (29) 5.1 范围 (30) 5.1.1 系统概述 (30) 5.1.2 测试方案 (30) 5.2 测试说明 (30) 5.2.1 功能测试 (31) 5.3 测试结果概述 (32) 5.4 详细测试结果 (33) 5.5 测试结果评价 (34) 第六章总结 (35) 致谢 (37)

android应用开发技术复习资料

android应用开发技术 一、判断题 1、在同一个资源目录中,可以存在两个文件名相同、扩展名不同的资源文件。(×) 2、Android系统下的文件,可以被本系统里的所有应用程序访问。(×) 3、无论Service是以启动方式还是绑定方式运行,该Service类都要重写onBind方法。(√) 4、一个Intent可以包含多个action。(×) 5、对于有序广播消息,是按照各个BroadcastReceiver注册的顺序先后接收并处理。(×) 6、Android是J2ME的一个实现。(×) 7、Android既是操作系统也是开发平台。(√) 8、Android是通过栈的形式来管理多个Activity的。(√) 9、View是ViewGroup的子类。(×) 10、一个Intent可以包含多个category。(√) 二、单项选择题 1、下面哪个不是Android的界面布局方式?( A ) A、FlowLayout B、LinearLayout C、TableLayout D、RelativeLayout 2、浏览网页使用的Intent的Action是什么?( D ) A、ACTION_CALL B、ACTION_EDIT C、ACTION_SEND D、ACTION_VIEW 3、Android 关于启动方式的service生命周期的onCreate()和onStartCommand()方法,说法正确的是( D ) A、当第一次启动的时候只会调用onCreate()方法 B、当第一次启动的时候只会调用onStartCommand ()方法 C、如果service已经启动,将先后调用onCreate()和onStartCommand ()方法 D、如果service已经启动,只会执行onStartCommand ()方法,不再执行onCreate()方法 4、下列关于ContentProvider的说法错误的是:( B ) A、ContentProvider的作用是实现数据共享和交换 B、要访问ContentProvider,只需调用ContentProvider的增删改查相关方法 C、ContentProvider提供的URI必须以“content://”开头 D、Android对于系统里的音视频、图像、通讯录提供了内置的ContentProvider 5、下列关于继承的哪项叙述是正确的?( D ) A、在Java中类允许多重继承 B、在Java中一个类只能实现一个接口 C、在Java中一个类不能同时继承一个类和实现一个接口 D、在Java中接口允许继承自另一个接口 6、以下哪种方式不能退出当前活动状态的Activity?( C ) A、调用finish()方法 B、单击(返回)按钮 C、单击(回到桌面)按钮 D、Activity运行时出现异常 7、对于TextView,使用哪个属性来设置显示的文本?( B ) A、android:textSize B、android:text C、android:textColor D、android:string 8、要处理Button的点击事件,需要注册哪个监听器?( A ) A、OnClickListener() B、OnButtonClickListener() C、OnButtonListener() D、OnItemClickListener() 9、在下述Java语言语句中,错误 ..的创建数组的方法是( D ) A、int intArray [ ]; intArray=new int[5]; B、int intArray [ ]=new int[5]; C、int [ ] intArray ={1,2,3,4,5}; D、int intArray [5]={1,2,3,4, 5}; 10、以下哪种方式不能退出当前活动状态的Activity?( C ) A、调用finish()方法 B、单击(返回)按钮 C、单击(回到桌面)按钮 D、Activity运行时出现异常 11、对于音乐播放器程序中的播放进度控制,使用哪个控件适合?( C ) A、ProgressBar B、RatingBar

相关文档
最新文档