- 浏览: 200226 次
- 性别:
- 来自: 上海
文章列表
数据在android中是私有的,当然这而数据包括文件数据和数据库数据以及一些其他类型的数据。那么两个程序之间如何进行数据交换呢?解决这个问题主要靠ContentProvider。一个ContentProvider类实现了一组标准的方法接口,从而能够让其他的应用保存或读取此Content Provider的各种数据类型。也就是说一个程序可以通过实现ContentProvider的抽象接口将自己的数据暴露出去。外界根本看不到,也就不用看到这个应用暴露的数据在应用当中如何存储的,或者是用数据库存储还是文件存储,还是网络存储。外界可以通过这套标准及统一的接口和程序中的数据打交道,可以操作程序中的数据 ...
Notification状态栏图标与文字提醒,只要将Notification添加到NotificationManager,即可将信息显示到状态栏上。
获取NotificationManager对象:
notiManager = (NotificationManager)getApplication().getSystemService(Service.NOTIFICATION_SERVICE);
当点击状态栏上的条目时,你需要进行页面的跳转等等,这里解释一下Notification的相关参数。
PendingIntent是一个悬挂起的Intent,也就是它先不执行,在它里面真正包 ...
设置手机震动,首先要在配置文件中添加权限:
<uses-permission android:name="android.permission.VIBRATE"/>
其次取得Vibrator对象。
vibrator = (Vibrator)getApplication().getSystemService(Service.VIBRATOR_SERVICE);
代码很简单,相关讲解看代码 ...
Android系统中集成的是SQLite3版本,SQLite是一个开源的嵌入式数据库,他支持NULL、INTEGER、REAL、TEXT和BLOB数据类型,不支持静态数据类型,而是使用列关系。
创建访问数据库,必须继承SQLiteOpenHelper类,且必须实现onCreate和onUpgrade两个方法,当创建数据库时,就会调用onCreate,所以可将要添加的table写在里面。当更新数据库时,则会调用onUpgrade,所以可将要更新的table的sql写在里面。前者用于初次使用软件时生成数据库,后者用于升级软件时更新数据库表结构。通过getWritableDatabase()和 ...
发邮件
- 博客分类:
- android chapter5
发送邮件使用android.content.Intent.ACTION_SEND,参数来实现通过手机发Email服务。收发Email的过程是通过android内置的Gmail程序,而非直接使用smtp的protocol,而模拟器上并未内置Gmail Client,因此该程序只能在真机上运行。
其实android中发送email有很多写法:
1. Uri uri = Uri.parse("mailto:****@gmail.com");
Intent emailIntent = new Intent(Intent.ACTION_SEND,uri);
startA ...
发短信的程序关键是通过SmsManager对象的sendTextMessage()方法来完成,其中sendTextMessage()方法要传入5个参数,依次是收件人地址(string),发送地址(string),正文(string),发送服务(pendingIntent)与送达服务(pendingIntent),其中收件人地址和正文不可以为空。
pendingIntent.getBroadcast()方法来定义一个PendingIntent并进行Broadcasting,而后使用SmsManager.getDefault(当处理SMS短信相关的活动,例如发送数据,文字与pdu SMS信息 ...
拨打电话有两个关键的方面:
1. 在AndroidManifest.xml中添加uses-permission,<uses-permission android:name="android.permission.CALL_PHONE"/>
2. 通过自定义的Intent对象,带入"ACTION_CALL"这个ACTION,还要通过Uri.parse()的方法将用户输入的电话号码(Data)带入,最后调用startActivity方法。
package com.kevin.phone;
import java.util.rege ...
Linkify对象可以让系统动态获取,并迅速做出判断;也就是说,当你输入电话号码时,点击链接,就会立刻到拨打电话的程序里;输入Email的话,就会进入收发email界面;输入网址,点击链接就自动打开浏览器,功能跟android:autoLink属性一样,根据内容做实时的正则表达式判断。
eg.
TextView tv = (TextView)findViewById(R.id.tv);
Linkify.addLinks(tv,Linkify.WEB_URLS|Linkify.E-MAIL_ADDRESSES|Linkify.PHONE_NUMBERS);
很简单,不多作解释了。
以前我们所见的Widget都是以Activity为主体的,但是在Android手机桌面(Home Screen AppWidgets)上的"小玩意"皆是属于桌面上的Android AppWidget。
类关系:
java.lang.Object
↳ android.content.BroadcastReceiver
↳ android.appwidget.AppWidgetProvider
AppWidget 框架类
1、AppWidgetProvider :继承自 BroadcastRecevier , 在AppWidget 应 ...
SlidingDrawer(隐藏式抽屉),它配置上采用了水平展开和垂直展开两种(android:orientation)方式,在XML里必须指定其使用的android:handle和android:content,前者委托要展开的图片(点击的那个控件来打开抽屉),后者则是要展开的Layout Content(打开抽屉后的内容)。还是很简单的。
配置文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas. ...
Android中提供了Bitmap和BitmapFactory对象,可以读取存储卡或者手机系统里的图片。BitmapFactory可以将图片文件转换成Bitmap对象。
1. decodeFile(String pathName)将手机文件系统中的图片转为Bitmap对象
2. decodeResource(Resources res, int id)将/res/drawable内图片文件转为Bitmap对象
3. decodeStream(InputStream is)将InputStream转为Bitmap对象
当然还有很多方法,这里不一一列举,大家可以查看一下API。
...
这里主要说一下,ListView支持OnItemClickListener事件,而Spinner不支持,Spinner中OnItemSelectedListener和ListView中OnItemSelectedListener的实现是不一样的,个人感觉Spinner中的OnItemSelectedListener跟ListView中的OnItemClickListener实现应该类似,但不知为何要用OnItemSelectedListener而不用OnItemClickListener这个名字,请知道的朋友指点一下。
另外,你可以在ListView下面配置一个TextView,设置它的 ...
GridView是一个类似于"表格化"的二位排版配置View,当GridView里的元素多到画面放不下时,就会出现scrolling的效果,一般在GridView里面的元素称为Item,要将文字作为Item放入GridView,就要借助ArrayAdapter对象。
另外GridView的setSelection方法我还是不怎么明白,望了解的朋友告知,谢谢。
package com.kevin.gridview;
import android.app.Activity;
import android.os.Bundle;
import android.vie ...
还记得前面的ProgressDialog吗?在应用时,必须新建ProgressDialog对象,在运行时会弹出"对话框"作为提醒,此时应用程序的后台失去焦点,知道进程结束后,才能重新获取焦点,而在ProgressBar中,可以提示User后台程序正处于忙碌,也可以不让后台失去焦点。
另外,系统默认的ProgressBar是小圆圈,你可以自己设置ProgressBar。如果你想要一个水平的进度条,你可以用android自带的样式。如下:
<ProgressBar android:id="@+id/progressBar1"
...
难点没什么难点,主要注意一下,DatePicker的OnDateChangeListener是在它的init方法中注册的。而TimePicker的OnTimeChangeListener是用setOnTimeChangeListener方法注册的。另外,有兴趣可以尝试一下DatePickerDialog和TimePickerDialog,其实很简单,采用以上两个是以弹出Dialog的方式来显示,这里不多做解释。
package com.kevin.datetime;
import java.util.Calendar;
import android.app.Activity;
...