android实习程序 ——短信
来源:互联网 发布:alt 左键 ubuntu 编辑:程序博客网 时间:2024/06/08 06:22
短信格式:
电话号码:(3/4位)区号 + (7/8)号码
中国电话号码难以处理
短信的uri以content://sms开头
短信
body //内容
type //类型(别人发给我或发给别人)1:接受,2:发出(除1以外的)
date //时间
id: //可能不准确
Thread_id//准确,短信会话的分组依据
read() //0表示未读,1表示已读
address //地址:电话号码
O2O :线上to线下
中国工商银行 2303亿
添加滚动条
<ScrollViewxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
添加在最外层
滚动条的高度
短信显示的高度
android的屏幕也是有坐标的
以左上角为原点,向右为X轴的正方向,向下为Y轴的正方向
滚动条的高度最多只能是屏幕的高度,但是短信显示的高度可以超出屏幕
主线程也可称为UI线程,与界面的响应度有关
优先度从大到小的排列的线程
Activity运行在主线程中,创建也是这里面
执行oncreate()、onstart()、onresume()
查询看看用户是否有ontouch()事件:触摸事件也为主线程
执行handler、service
主线程忙,须有优先度的排列
Ctrl + Shift + F :java 中的格式化
注意把搜狗输入法关掉,搜狗输入法会占用该快捷键
阿里云 的 android SDK
1、短信界面
2、在Log中查看短信
3、加滚动条的从下往上显示短信
===========================================
1、短信界面
sms_detail_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="bottom"
android:background="#f0f0fd">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/cvsn_bg_left"
android:text="hellosfsdf"
android:textColor="#0d0d0d"
android:gravity="right"
android:layout_gravity="left"
android:layout_marginBottom="4dp"
android:layout_marginTop="4dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/cvsn_bg_right"
android:text="hi"
android:textColor="#0d0d0d"
android:gravity="right"
android:layout_gravity="right"
android:layout_marginBottom="4dp"
android:layout_marginTop="4dp"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="48dp"
android:layout_marginTop="4dp"
android:layout_weight="1.25"
android:background="@drawable/cvsn_bg_right"
android:gravity="right"
android:text="Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2"
android:textColor="#0d0d0d" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2013/07/10 11:35"
android:textColor="#0d0d0d"
android:paddingRight="16dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginTop="4dp"
android:layout_marginRight="48dp"
android:background="@drawable/cvsn_bg_left"
android:gravity="left"
android:text="HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello"
android:textColor="#0d0d0d"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2013/07/10 11:30"
android:textColor="#0d0d0d"
android:paddingLeft="16dp"/>
</LinearLayout>
</LinearLayout>
===================================================-
2、在Log中查看短信
SmsActivity.java
package cpm.tarena.Phone;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
public class SmsActivity extends Activity{
ContentResolver mContentResolver;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
mContentResolver = this.getContentResolver();
//读出每个电话号码,对应的最新一条短信//准备Uri 调用数据
Uri smsTitle =Uri.parse("content://mms-sms/conversations");
Cursor mCursor = mContentResolver.query(smsTitle, null, null, null, "date desc");
String[] arrcols = mCursor.getColumnNames();
while(mCursor.moveToNext()){
for(int i = 0; i<arrcols.length; i++){
Log.i("sms_data", arrcols[i]+":"+mCursor.getString(i));
}
Log.i("sms_data", "-------------------------");
}
mCursor.close();
//查询Thread_id对应的短信
Uri smsdetaildata = Uri.parse("content://sms");
mCursor =mContentResolver.query(smsdetaildata, null, "thread_id=1", null, "date desc");
arrcols = mCursor.getColumnNames();
while(mCursor.moveToNext()){
for(int i = 0; i<arrcols.length; i++){
Log.i("sms_detaildata", arrcols[i]+":"+mCursor.getString(i));
}
Log.i("sms_detaildata", "************************");
}
mCursor.close();
}
}
在manifest 中修改name的为.SmsActivity
创建sms_data 和 sms_detaildata 分别查看
=================================================================
3、加滚动条的从下往上显示短信
sms_detail_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fcfcfc">
<ScrollView
android:id="@+id/sms_scrollview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#fcfcfc" >
<LinearLayout
android:id="@+id/sms_detail_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fdfdfd"
android:gravity="bottom"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="24dp"
android:layout_marginTop="4dp"
android:background="@drawable/cvsn_bg_right"
android:text="Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2Hi2"
android:textColor="#0d0d0d"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2013/07/10 11:35"
android:textColor="#0d0d0d"
android:paddingRight="16dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginRight="24dp"
android:layout_marginTop="4dp"
android:background="@drawable/cvsn_bg_left"
android:gravity="left"
android:text="HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello"
android:textColor="#0d0d0d"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2013/07/10 11:30"
android:textColor="#0d0d0d"
android:paddingLeft="16dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginRight="24dp"
android:layout_marginTop="4dp"
android:background="@drawable/cvsn_bg_left"
android:gravity="left"
android:text="HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello"
android:textColor="#0d0d0d"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2013/07/10 11:30"
android:textColor="#0d0d0d"
android:paddingLeft="16dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginRight="24dp"
android:layout_marginTop="4dp"
android:background="@drawable/cvsn_bg_left"
android:gravity="left"
android:text="4HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello"
android:textColor="#0d0d0d"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2013/07/10 11:30"
android:textColor="#0d0d0d"
android:paddingLeft="16dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginRight="24dp"
android:layout_marginTop="4dp"
android:background="@drawable/cvsn_bg_left"
android:gravity="left"
android:text="3HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello"
android:textColor="#0d0d0d"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2013/07/10 11:30"
android:textColor="#0d0d0d"
android:paddingLeft="16dp"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</RelativeLayout>
-----------------------------------------
SmsActivity.java
package cpm.tarena.Phone;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.LinearLayout;
import android.widget.ScrollView;
public class SmsActivity extends Activity {
ContentResolver mContentResolver;
LinearLayout mLinearLayout;
ScrollView mScrollView;
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
int mScrollViewHeight = mScrollView.getHeight();
int mLinearLayoutHeight = mLinearLayout.getMeasuredHeight();
int moveSizeY = mLinearLayoutHeight - mScrollViewHeight;
mScrollView.scrollTo(0, moveSizeY);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.sms_detail_layout);
// 找到滚动条和显示短信的布局,计算 该移动的高度
mScrollView = (ScrollView) findViewById(R.id.sms_scrollview);
mLinearLayout = (LinearLayout) findViewById(R.id.sms_detail_layout);
// //1毫秒、10毫秒、100毫秒不行,1秒就行了(简单推迟)
// mHandler.sendEmptyMessageDelayed(0, 1000);
mContentResolver = this.getContentResolver();
// 读出每个电话号码,对应的最新一条短信//准备Uri 调用数据
Uri smsTitle = Uri.parse("content://mms-sms/conversations");
Cursor mCursor = mContentResolver.query(smsTitle, null, null, null,
"date desc");
String[] arrcols = mCursor.getColumnNames();
while (mCursor.moveToNext()) {
for (int i = 0; i < arrcols.length; i++) {
Log.i("sms_data", arrcols[i] + ":" + mCursor.getString(i));
}
Log.i("sms_data", "-------------------------");
}
mCursor.close();
// 查询Thread_id对应的短信
Uri smsdetaildata = Uri.parse("content://sms");
mCursor = mContentResolver.query(smsdetaildata, null, "thread_id=1",
null, "date desc");
arrcols = mCursor.getColumnNames();
while (mCursor.moveToNext()) {
for (int i = 0; i < arrcols.length; i++) {
Log.i("sms_detaildata", arrcols[i] + ":" + mCursor.getString(i));
}
Log.i("sms_detaildata", "************************");
}
mCursor.close();
}
@Override
protected void onResume() {
super.onResume();
// 1毫秒、10毫秒不行,100毫秒就行了(简单推迟)
mHandler.sendEmptyMessageDelayed(0, 100);
}
}
==========================================================
- android实习程序 ——短信
- android实习程序4——页面跳转
- android实习程序6——拨号通话
- android实习程序7——通话记录显示
- android实习程序
- android实习程序2
- android实习程序3
- android 短信发送程序
- Android短信发送程序
- Android发短信程序
- 【Android】短信应用——短信发送
- 【Android】短信应用——短信截获
- 【Android】短信应用——短信截获
- 【Android】短信应用——短信截获
- 【Android】短信应用——短信截获
- 【Android】短信应用——短信截获
- Android之路——第二个Android小程序(Android短信发送)
- Android之路——第二个Android小程序(Android短信发送)
- 解决mySQL占用内存超大问题
- Android多任务下载,使用Notification显示、更新进度条
- Unbuntu常用的进程管理命令
- Tour in the Castle zoj3256
- core dump
- android实习程序 ——短信
- 【Android小范例教程】【1】查找程序根目录下的文件
- time_wait和close_wait(面试时被问到)
- 用GDB调试程序(三)
- Sencha Touch中使用标准LocalStorage
- UILocalNotification之soundName
- Poj 3321 Apple Tree(树变序列+时间戳+树状数组)
- 用GDB调试程序(四)
- postfix实现邮件发送的简单配置