安卓实验报告
班级:学号:姓名:
xxxxx
11111111
xxxx
实验一:Activity生命周期的测试
一:实验目的
掌握使用Eclipse开发Android应用开发程序的方法; 掌握Android虚拟设备的创建方法; 了解Android的程序结构;
了解使用命令行创建Android程序方法;
了解Activity生命周期,理解Activity事件回调,onRestoreInstanceState()和 onSaveInstanceState两个函数的使用。
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备( AVD)
三:实验内容
(1)正常启动ActivityLife,然后单击用户界面的“结束程序”按钮关闭程序。
(2)正常启动ACtivityLife,然后通过“拨号键”启动内置的拨号程序,再通过“回 退建” 退出拨号程序,使ActivityLife重新显示在屏幕中。
四:实验核心代码
package com.example.activitylife;
import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.os.Build;
public cla MainActivity extends Activity { private static String TAG=\"LIFECYCLE\"; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); Log.i(TAG,\"(1) onCreate()\"); Button button =(Button) findViewById(R.id.btn_finish); button.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
// TODO Auto-generated method stub
finish();
} }); }
@Override
protected void onStart() { // TODO Auto-generated method stub
super.onStart(); Log.i(TAG,\"(2) onStart()\"); } @Override
protected void onRestoreInstanceState(Bundle savedInstanceState) { // TODO Auto-generated method stub
super.onRestoreInstanceState(savedInstanceState); Log.i(TAG,\"(3) onRestoreInstanceState()\"); } @Override
protected void onResume() { // TODO Auto-generated method stub
super.onResume(); Log.i(TAG,\"(4) onResume()\"); } @Override
protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub
super.onSaveInstanceState(outState); Log.i(TAG,\"(5) onSaveInstanceState()\"); } @Override
protected void onRestart() { // TODO Auto-generated method stub
super.onRestart(); Log.i(TAG,\"(6) onRestart()\"); } @Override
protected void onPause() { // TODO Auto-generated method stub
super.onPause(); Log.i(TAG,\"(7) onPause()\"); } @Override
protected void onStop() { // TODO Auto-generated method stub
super.onStop(); Log.i(TAG,\"(8) onStop()\"); } @Override
protected void onDestroy() { // TODO Auto-generated method stub
super.onDestroy(); Log.i(TAG,\"(9) onDestroy()\"); } } 五:运行结果截图:
实验二:用户界面——自我介绍
一:实验目的:
了解各种界面控件的使用方法;
掌握按键事件和触摸事件的处理方法;
掌握radioButton和radioGroup的使用方法。
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备( AVD)
三:实验内容
要求写一个自我介绍的安卓应用,包括姓名,性别,爱好,其中性别用radioButton选项编写,点击提交时,姓名,性别,爱好会在下面显示出来。
四:实验核心代码:
public cla MainActivity extends Activity { private EditText editText1; private EditText editText2; private EditText editText3; private TextView textView1; private TextView textView2; private TextView textView3; private RadioGroup radioGroup; private RadioButton radioButton1; private RadioButton radioButton2; private Button button; protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText1 = (EditText) findViewById(R.id.e1);
editText2 = (EditText) findViewById(R.id.e2);
textView1 = (TextView) findViewById(R.id.t1);
textView2 = (TextView) findViewById(R.id.t2);
textView3 = (TextView) findViewById(R.id.t3);
radioGroup = (RadioGroup) findViewById(R.id.RadioGroup1);
radioButton1 = (RadioButton) findViewById(R.id.RadioButton1);
radioButton2 = (RadioButton) findViewById(R.id.RadioButton2);
button = (Button) findViewById(R.id.button1);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup arg0, final int arg1) {
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
String str = editText1.getText().toString().trim();
String str1 = editText2.getText().toString().trim();
textView1.setText(\"姓名:\"+str);
textView3.setText(\"爱好:\"+str1);
if (arg1 == R.id.RadioButton1)
textView2.setText(\"性别:\"+\"男\");
else if (arg1 == R.id.RadioButton2)
textView2.setText(\"性别:\"+\"女\");
}
});
}
}); } } 五:运行结果截图:
实验三:不同界面的切换
一:实验目的
掌握各种界面布局的特点和使用方法;
掌握选项菜单,子菜单和快捷菜单的使用方法。
二;实验设备
Eclipse 开发Android 应用 Android虚拟设备( AVD)
三;实验内容:
设计一个Tab标签页,实现LinearLayout,RelativeLayout,AbsoluteLayout三种分页面之间的切换,每个页面的内容包括用户名和确定,取消两个按钮
四:实验核心代码: AndroidMainfest.xml:
public cla MainActivity extends TabActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TabHost tabHost=getTabHost(); LayoutInflater.from(this).inflate(R.layout.tab1,
tabHost.getTabContentView(),true); LayoutInflater.from(this).inflate(R.layout.tab2,
tabHost.getTabContentView(),true); LayoutInflater.from(this).inflate(R.layout.tab3,
tabHost.getTabContentView(),true); tabHost.addTab(tabHost.newTabSpec(\"TAB1\").
setIndicator(\"线性布局\").setContent(R.id.layout01)); tabHost.addTab(tabHost.newTabSpec(\"TAB1\").
setIndicator(\"绝对布局\").setContent(R.id.layout02)); tabHost.addTab(tabHost.newTabSpec(\"TAB1\").
setIndicator(\"相对布局\").setContent(R.id.layout03)); } } Tab1,java public cla Tab1 extends Activity { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab1); } }
Tab2.java public cla Tab2 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.tab2); } }
Tab3.java public cla Tab3 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.tab3); } }
五:运行结果截图:
实验四:登陆界面和广播消息
一:实验目的
了解使用Intent进行组件通信的原理; 了解Intent过滤器的原理与匹配机制;
掌握发送和接受广播消息的方法。
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备( AVD)
三:实验内容
先写一个登陆界面,包括用户名,密码,点击登陆时实现页面的跳转功能,在第二个页面使用Intent发送消息,并调用sendBroadcast()函数把Intent携带的消息传送出去,用BroadcastReceiver接受广播消息,在页面下方显示广播内容。
四;实验核心代码:
public cla MainActivity extends Activity { private Button button; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button) findViewById(R.id.button1); button.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent intent=new Intent(MainActivity.this,Second.cla);
startActivity(intent);
} }); } } public cla Second extends Activity { private Button button2; private EditText editText; protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Intent intent=getIntent();
editText=(EditText) findViewById(R.id.e1);
button2=(Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent intent=new
Intent(\"com.example.broadcasttest.MY_BROADCAST\");
intent.putExtra(\"meage\", editText.getText().toString());
sendBroadcast(intent);
}
});
}
public cla MyBroadcastReceiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent) {
String msg=intent.getStringExtra(\"meage\");
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } }
android:name=\".Second\">
五:运行结果截图
实验五:Service绑定实现数据运算
一:实验目的
了解Service的原理和用途;
掌握本地服务的管理和方法; 掌握服务的隐式启动和显示启动方法;
掌握远程服务的绑定和调用方法。
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备( AVD)
三:实验内容
以绑定方式使用Service,获取Service实例,当点击绑定服务时可以实现两个数的求差和比较大小功能,并输出结果,当点击取消绑定服务时,则无法运算。
四:实验核心代码
public cla MathService extends Service{ private final IBinder mBinder=new LocalBinder(); public cla LocalBinder extends Binder{ MathService getService(){
return MathService.this; } } public IBinder onBind(Intent intent) { Toast.makeText(this, \"本地绑定:MathService\",Toast.LENGTH_SHORT).show(); return mBinder; }
public boolean onUnbind(Intent intent){ Toast.makeText(this, \"取消本地绑定:MathService\", Toast.LENGTH_SHORT).show(); return false; }
public long sub(long a,long b){ return a-b; }
public int compare(long a,long b){ if(a>b) return 1; else if(a==b) return 0; else return -1;
} }
public cla MainActivity extends Activity { private MathService mathService; private Button button1; private Button button2; private Button button3; private Button button4; private EditText editText1; private EditText editText2; private EditText editText3; private boolean isBound=false; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText1=(EditText) findViewById(R.id.e1); editText2=(EditText) findViewById(R.id.e2); editText3=(EditText) findViewById(R.id.e3); button1=(Button) findViewById(R.id.but1); button2=(Button) findViewById(R.id.but2); button3=(Button) findViewById(R.id.but3); button4=(Button) findViewById(R.id.but4); button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(!isBound){
final Intent serviceIntent=new Intent (
MainActivity.this,MathService.cla);
bindService(serviceIntent, mConnection, Context.BIND_AUTO_CREATE);
isBound=true;
}
}
}); button4.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) { if(isBound){
isBound=false; unbindService(mConnection);
mathService=null; }
} });
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(mathService==null){
editText3.setText(\"未绑定服务\");
return ;
}
String a = editText1.getText().toString();
long a1 = Long.parseLong(a);
String b = editText2.getText().toString();
long b1 = Long.parseLong(b);
long result=mathService.sub(a1, b1);
String msg=String.valueOf(a1)+\"-\"+String.valueOf(b)+
\"=\"+String.valueOf(result);
editText3.setText(msg);
} });
button3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(mathService==null){
editText3.setText(\"未绑定服务\");
return ;
}
String a = editText1.getText().toString();
long a1 = Long.parseLong(a);
String b = editText2.getText().toString();
long b1 = Long.parseLong(b);
long result=mathService.compare(a1, b1);
if(result==1){
editText3.setText(a+\">\"+b);
}
else if(result==0){
editText3.setText(a+\"=\"+b);
}
else {
editText3.setText(a+\"
}
} }); } private ServiceConnection mConnection=new ServiceConnection() {
public void onServiceDisconnected(ComponentName arg0) {
mathService=null;
}
public void onServiceConnected(ComponentName name, IBinder service) {
mathService=((MathService.LocalBinder)service).getService();
} }; }
实验六:SQLite实现用户的增删改查
一:实验目的
了解SQLite数据库的特点和体系及结构;
掌握SQLite数据库的建立和操作方法;
理解ContentProvide的用途和原理;
掌握ContentProvider的创建和使用方法。
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备( AVD)
三:实验内容
使用SQlite数据库实现用户(包括:姓名,年龄,身高)的添加数据,全部显示,清除显示,全部删除,ID删除,ID查询,ID更新的功能。
四:实验核心代码
public cla MainActivity extends ActionBarActivity { private EditText et_name; private EditText et_sex; private EditText et_department; private EditText et_id; private EditText et_salary; private MyOpenHelper oh; private SQLiteDatabase db; private TextView tv; private LinearLayout ll; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
oh = new MyOpenHelper(MainActivity.this, \"test.db\", null, 1);
db = oh.getWritableDatabase();
et_name = (EditText) findViewById(R.id.et_name);
et_sex = (EditText) findViewById(R.id.et_sex);
et_department = (EditText) findViewById(R.id.et_department);
et_salary = (EditText) findViewById(R.id.et_salary);
et_id = (EditText) findViewById(R.id.et_id);
ll = (LinearLayout) findViewById(R.id.ll); }
public void add(View v){
db = oh.getWritableDatabase();
String name=et_name.getText().toString();
String sex=et_sex.getText().toString();
String department=et_department.getText().toString();
String salary=et_salary.getText().toString();
ContentValues values=new ContentValues();
values.put(\"name\",name );
values.put(\"sex\", sex);
values.put(\"department\",department);
values.put(\"salary\", salary);
db.insert(\"staff\", null, values);
tv=new TextView(MainActivity.this);
tv.setText(\"添加成功\");
db.close(); } public void show(View v){
db = oh.getWritableDatabase();
Cursor cursor=db.query(\"staff\", null, null, null, null, null, null, null);
while(cursor.moveToNext()){
String id=cursor.getString(cursor.getColumnIndex(\"_id\"));
String name=cursor.getString(cursor.getColumnIndex(\"name\"));
String sex=cursor.getString(cursor.getColumnIndex(\"sex\"));
String department=cursor.getString(cursor.getColumnIndex(\"department\"));
String salary=cursor.getString(cursor.getColumnIndex(\"salary\"));
tv=new TextView(MainActivity.this);
tv.setText(\"ID:\"+id+\" ;\"+\"Name:\"+name+\" ;\"+\"Sex:\"+sex+\" ;\"+\"Department:\"+department+\" ;\"+\"Salary\"+salary);
ll.addView(tv);
}
db.close(); } public void clear(View v){
ll.removeAllViews(); } public void deleteAll(View v){
db = oh.getWritableDatabase();
db.delete(\"staff\", null, null);
tv=new TextView(MainActivity.this);
tv.setText(\"删除成功\");
db.close(); }
public void deleteById(View v){
db = oh.getWritableDatabase();
String id=et_id.getText().toString();
db.delete(\"staff\", \"_id=?\", new String[]{id});
db.close();
tv=new TextView(MainActivity.this);
tv.setText(\"ID删除成功\"); } public void findById(View v){
db = oh.getWritableDatabase();
String id=et_id.getText().toString();
Cursor cursor=db.query(\"staff\", null, \"_id=?\", new String[]{id}, null, null, null, null);
while(cursor.moveToNext()){
id=cursor.getString(cursor.getColumnIndex(\"_id\"));
String name=cursor.getString(cursor.getColumnIndex(\"name\"));
String sex=cursor.getString(cursor.getColumnIndex(\"sex\"));
String department=cursor.getString(cursor.getColumnIndex(\"department\"));
String salary=cursor.getString(cursor.getColumnIndex(\"salary\"));
tv=new TextView(MainActivity.this);
tv.setText(id+\";\"+name+\";\"+sex+\";\"+department+\";\"+salary);
ll.addView(tv);
tv=new TextView(MainActivity.this);
tv.setText(\"ID查询成功\");
}
db.close(); } public void updateById(View v){
db = oh.getWritableDatabase();
String id=et_id.getText().toString();
String name=et_name.getText().toString();
String sex=et_sex.getText().toString();
String department=et_department.getText().toString();
String salary=et_salary.getText().toString();
ContentValues values=new ContentValues();
values.put(\"name\",name);
values.put(\"sex\", sex);
values.put(\"department\",department);
values.put(\"salary\", salary);
db.update(\"staff\", values, \"_id=?\", new String[]{id});
tv=new TextView(MainActivity.this);
tv.setText(\"更新ID成功\");
db.close(); } }
public cla MyOpenHelper extends SQLiteOpenHelper {
public MyOpenHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version); }
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(\"create table staff(_id integer primary key autoincrement,name text,sex text,department text,salary float)\"); }
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} }
五:运行结果截图
实验七:天气预报 一:实验目的
了解位置服务的概念;
了解地图密钥的申请方法;
掌握获取地理信息的方法;
二:实验设备
Eclipse 开发Android 应用 Android虚拟设备( AVD)
三:实验内容
写一个项目,实现显示天气预报的用户界面,显示已发送SMS短信的用户界面,不同地区天气的转换
四:实验核心代码
package com.example.weather;
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List;
import net.sf.json.JSONArray; import net.sf.json.JSONObject; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Meage; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast;
import com.zy.bean.Sms; import com.zy.bean.Weather;
public cla MainActivity extends Activity { private MyConn conn = new MyConn();; private EditText et_city; private TextView tv_result; private ImageView iv_weather; private Handler handler; private Intent intent; private MyOpenHelper oh; private ServiceFunctions sFunctions; private MyArrayAdapter myArrayAdapter = null; private ListView lv; private int a = 1; private Weather weather; private List smsList = null;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
oh = new MyOpenHelper(MainActivity.this, \"weatherdemo.db\", null, 1);
// System.out.println(\"数据库创建完\");
et_city = (EditText) findViewById(R.id.et_city);
tv_result = (TextView) findViewById(R.id.tv_result);
iv_weather = (ImageView) findViewById(R.id.iv_weather);
lv = (ListView) findViewById(R.id.lv);
// System.out.println(\"lv找到了\");
intent = new Intent(this, MyService.cla);
startService(intent);
Toast.makeText(MainActivity.this, \"服务启动\", 0).show();
bindService(intent, conn, BIND_AUTO_CREATE);
Toast.makeText(MainActivity.this, \"服务绑定\", 0).show();
handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMeage(Meage msg) {
final Weather weather = (Weather) msg.obj;
tv_result.setText(weather.toString());
}
new Thread(new Runnable() { @Override public void run() {
// TODO Auto-generated method stub
try {
URL url = new URL(weather.getDayPictureUrl());
HttpURLConnection con = (HttpURLConnection) url
.openConnection();
con.setRequestMethod(\"GET\");
if (con.getResponseCode() == 200) {
final Bitmap bitmap = BitmapFactory
.decodeStream(con.getInputStream());
runOnUiThread(new Runnable() {
}
@Override
public void run() {
// TODO Auto-generated method stub
iv_weather.setImageBitmap(bitmap);
}
}); }
} catch (Exception e) {
// TODO Auto-generated catch block e.printStackTrace(); }
}).start();
return false; } }); cla MyConn implements ServiceConnection {
@Override public void onServiceConnected(ComponentName name, IBinder service) { sFunctions = (ServiceFunctions) service; } @Override public void onServiceDisconnected(ComponentName name) {
} } cla MyArrayAdapter extends ArrayAdapter {
} public MyArrayAdapter(Context context, int resource,
int textViewResourceId, List objects) { super(context, resource, textViewResourceId, objects); } public void saveWeather(View view) { if (a == 1) {
sFunctions.insertInfo(weather, oh);
a++; } else {
sFunctions.updateInfoById(\"1\", weather, oh); } Toast.makeText(MainActivity.this, \"保存天气信息成功\", 0).show(); } public void show(View view) { smsList = sFunctions.findAll(oh); if (smsList.size() > 0) {
List sList = new ArrayList();
for (Sms sms : smsList) {
String s = sms.toString();
sList.add(s);
}
if (sList.size() > 0) {
myArrayAdapter = new MyArrayAdapter(MainActivity.this,
R.layout.second, R.id.tv_show, sList);
lv.setAdapter(myArrayAdapter);
} } }
public void getWeather(View view) {
new Thread(new Runnable() {
String city = et_city.getText().toString();
@Override
public void run() {
try {
URL url = new URL(
\"http://api.map.baidu.com/telematics/v3/weather?location=\"
+ URLEncoder.encode(city)
+ \"&output=json&ak=QLZmpAbwFlWreQ28kLVgvKEC\");
HttpURLConnection con = (HttpURLConnection) url
.openConnection();
con.setRequestMethod(\"GET\");
int code = con.getResponseCode();
if (code == 200) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(con.getInputStream()));
JSONObject json = JSONObject.fromObject(reader
.readLine());
// System.out.println(obj.toString());
JSONArray array = json.getJSONArray(\"results\");
JSONObject obj = array.getJSONObject(0);
JSONObject weather_data = obj.getJSONArray(
\"weather_data\").getJSONObject(0);
weather = new Weather(obj.getString(\"currentCity\"), obj
.getString(\"pm25\"), weather_data
.getString(\"date\"), weather_data
.getString(\"weather\"), weather_data
.getString(\"wind\"), weather_data
.getString(\"temperature\"), weather_data
.getString(\"dayPictureUrl\"), weather_data
.getString(\"nightPictureUrl\"));
Meage msg = new Meage();
msg.obj = weather;
handler.sendMeage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start(); } }
package com.example.weather;
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper;
public cla MyOpenHelper extends SQLiteOpenHelper {
public MyOpenHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version); }
@Override public void onCreate(SQLiteDatabase db) {
db.execSQL(\"create table sms(_id integer primary key autoincrement,sms_sender text,sms_body text,sms_receive_time text,return_result text)\");
db.execSQL(\"create table weatherinfo(_id integer primary key autoincrement,info text)\"); }
@Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
} }
package com.example.weather;
import java.util.List;
import android.app.Service; import android.content.Intent; import android.content.ServiceConnection; import android.os.Binder; import android.os.IBinder;
import com.zy.bean.Sms; import com.zy.bean.Weather;
public cla MyService extends Service { private ISmsDaoImpl daoImpl; private MyBinder myBinder = new MyBinder();
@Override public IBinder onBind(Intent intent) {
return myBinder; }
@Override public void unbindService(ServiceConnection conn) {
super.unbindService(conn); }
cla MyBinder extends Binder implements ServiceFunctions{
public long insertSms(Sms sms,MyOpenHelper oh) {
return MyService.this.insertSms(sms,oh);
}
public List findAll(MyOpenHelper oh) {
return MyService.this.findAll(oh);
}
public long insertInfo(Weather w,MyOpenHelper oh) {
return MyService.this.insertInfo(w,oh);
}
public int updateInfoById(String id, Weather w,MyOpenHelper oh) {
return MyService.this.updateInfoById(id, w,oh);
} }
public long insertSms(Sms sms,MyOpenHelper oh) {
daoImpl=new ISmsDaoImpl(oh);
long id = daoImpl.insertSms(sms);
return id; }
public List findAll(MyOpenHelper oh) {
daoImpl=new ISmsDaoImpl(oh);
List smsList = daoImpl.findAll();
return smsList; }
public long insertInfo(Weather w,MyOpenHelper oh) {
daoImpl=new ISmsDaoImpl(oh);
long id = daoImpl.insertInfo(w);
return id; }
public int updateInfoById(String id, Weather w,MyOpenHelper oh) {
daoImpl=new ISmsDaoImpl(oh);
int num = daoImpl.updateInfoById(id, w);
return num; } } 五:运行结果截图