Android之Bmob腾挪云服务(一)

Android之Bmob移动云服务(一)

没有口水与汗水,就没有成功的泪水。


本讲内容:Bmob移动云服务


一、Bmob的使用步骤

1在你的项目根目录下创建"libs"目录,将下载的BmobSDK文件中的两个.jar文件放入该目录下。

Android之Bmob腾挪云服务(一)

对于Eclipse工程,请参照下面的步骤添加jar包:

1. 选择你的工程,单击鼠标右键选择“Properties”项

2. 在弹出的窗口中选择“Java Build Path”项

3. 在右侧的主窗体中选择“Libraries”选项卡

4. 点击“Add JARs…”按钮

5. 选择你拷贝到libs目录下的Bmob.jar文件

6. 点击“OK”完成


2、在您的应用程序中添加相应的权限:

  <!-- Bmob SDK权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_LOGS" />


3、在你的应用程序启动的ActivityonCreate()方法中初始化Bmob功能

 // 初始化 Bmob SDK ,并将第二个参数appKey替换成你在Bmob服务器端创建的应用key
    Bmob.initialize(this, "14fcb34593937578a18862a1b33f29a1");



示例一:Bmob 增删改查

Android之Bmob腾挪云服务(一)  Android之Bmob腾挪云服务(一)

运行应用程序后,一个新的对象类Person将会传送到我们的服务器,并在您的应用表中创建Person数据表,它在Bmob服务器端应该是这样展示的:

Android之Bmob腾挪云服务(一)

下面是res/layout/activity_main.xml 布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/bg" >

    <EditText
        android:id="@+id/id_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:gravity="center"
        android:hint="input name" />

    <EditText
        android:id="@+id/id_address"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/id_name"
        android:layout_marginTop="20dp"
        android:gravity="center"
        android:hint="input address"
        android:lines="2" />

    <Button
        android:id="@+id/id_submit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/id_address"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:minWidth="100dp"
        android:onClick="submit"
        android:text="Submit" />

    <Button
        android:id="@+id/id_queryAll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/id_submit"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:minWidth="100dp"
        android:onClick="queryAll"
        android:text="Query all" />

    <EditText
        android:id="@+id/id_queryName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/id_queryAll"
        android:layout_marginTop="20dp"
        android:gravity="center"
        android:hint="input name"
        android:minWidth="200dp" />

    <Button
        android:id="@+id/id_queryPerson"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@id/id_queryAll"
        android:layout_marginTop="20dp"
        android:minWidth="150dp"
        android:onClick="queryPerson"
        android:text="Query person" />

    <EditText
        android:id="@+id/id_updateAddress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/id_queryPerson"
        android:layout_marginTop="20dp"
        android:gravity="center"
        android:hint="input address"
        android:minWidth="200dp" />

    <Button
        android:id="@+id/id_update"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@id/id_queryPerson"
        android:layout_marginTop="20dp"
        android:minWidth="150dp"
        android:onClick="update"
        android:text="Update" />

    <Button
        android:id="@+id/id_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/id_update"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:minWidth="100dp"
        android:onClick="delete"
        android:text="Delete" />

</RelativeLayout>


下面是Person.java文件:(创建JavaBean)

/**
 * 使用Bmob存储数据(需extends BmobObject) Person 对应一张表 name 对应表中的字段名 address
 * 
 * @author Administrator
 *
 */
public class Person extends BmobObject {
	private String name;
	private String address;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

}


下面是MainActivity.java主界面文件:

public class MainActivity extends Activity {
	private EditText mName;
	private EditText mAddress;
	private EditText mQueryName;
	private EditText mUpdateAddress;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		 // 初始化 Bmob SDK ,并将第二个参数appKey替换成你在Bmob服务器端创建的应用key
		Bmob.initialize(this, "14fcb34593937578a18862a1b33f29a1");
		
		mName=(EditText) findViewById(R.id.id_name);
		mAddress=(EditText) findViewById(R.id.id_address);
		mQueryName=(EditText) findViewById(R.id.id_queryName);
		mUpdateAddress=(EditText) findViewById(R.id.id_updateAddress);
	}
	
	/**
	 * 添加数据
	 * 通过Person对象提交数据到云服务中保存数据
	 */
	public void submit(View v){
		String name=mName.getText().toString();
		String address=mAddress.getText().toString();
		if(name.equals("")||address.equals("")){
			return;
		}
		//保存数据
		Person p=new Person();
		//传入Feedback对象(相当于在表中新增一条数据)
		p.setName(name);
		p.setAddress(address);
		p.save(MainActivity.this,new SaveListener() {
			public void onSuccess() {
				Toast.makeText(MainActivity.this, "submit success", Toast.LENGTH_LONG).show();
			}
			
			public void onFailure(int code, String msg) {
				Toast.makeText(MainActivity.this, "submit failure", Toast.LENGTH_LONG).show();
			}
		});
	}
	
	/**
	 * 查询所有数据
	 * @param v
	 */
	public void queryAll(View v){
		BmobQuery<Person> query=new BmobQuery<Person>();
		query.findObjects(MainActivity.this, new FindListener<Person>() {
			public void onSuccess(List<Person> persons) {
				AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
				builder.setTitle("Query");
				String str="";
				for(Person person : persons){
					str+=person.getName()+":"+person.getAddress()+"\n";
				}
				builder.setMessage(str);
				builder.create().show();
			}
			
			public void onError(int code, String msg) {
				
			}
		});
	}
	
	/**
	 * 查询单条数据
	 * @param v
	 */
	public void queryPerson(View v){
		String str=mQueryName.getText().toString();
		if(str.equals("")){
			return;
		}
		BmobQuery<Person> query=new BmobQuery<Person>();
		query.addWhereEqualTo("name", str);//增加条件
		query.findObjects(MainActivity.this, new FindListener<Person>() {
			public void onSuccess(List<Person> persons) {
				AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
				builder.setTitle("Query");
				String str="";
				for(Person person : persons){
					str+=person.getName()+":"+person.getAddress()+"\n";
				}
				builder.setMessage(str);
				builder.create().show();
			}
			
			public void onError(int code, String msg) {
				
			}
		});
	}
	
	/**
	 * 修改数据
	 */
	public void update(View v){
		String str=mUpdateAddress.getText().toString();
		if(str.equals("")){
			return;
		}
		
		//更新Person表里面id为bce7d5e372的数据
		Person p=new Person();
		p.setAddress(str);
		p.update(this, "bce7d5e372", new UpdateListener() {
			public void onSuccess() {
				Toast.makeText(MainActivity.this, "update success", Toast.LENGTH_LONG).show();
			}
			
			public void onFailure(int code, String msg) {
				Toast.makeText(MainActivity.this, "update failure", Toast.LENGTH_LONG).show();
			}
		});
	}
	
	/**
	 * 删除数据
	 * @param v
	 */
	public void delete(View v){
		Person p=new Person();
		p.setObjectId("bce7d5e372");
		p.delete(MainActivity.this, new DeleteListener() {
			public void onSuccess() {
				Toast.makeText(MainActivity.this, "delete success", Toast.LENGTH_LONG).show();
			}
			
			public void onFailure(int code, String msg) {
				Toast.makeText(MainActivity.this, "update failure", Toast.LENGTH_LONG).show();
			}
		});
	}
	
}


在AndroidMainfest.xml文件

<!-- Bmob SDK权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_LOGS" />



Take your time and enjoy it 要原码的、路过的、学习过的请留个言,顶个呗~~