Shopping_数据库——购物系列


1.******************************************************Shopping*******************************************

public class Shopping {
    private int _id;
    private String name;
    private String color;
    private String price;
    private String num;
    private String address;
    private boolean isChecked;
    private int picId;
    public boolean isChecked() {
        return isChecked;
    }
    public void setChecked(boolean isChecked) {
        this.isChecked = isChecked;
    }

    public int getPicId() {
        return picId;
    }

    public void setPicId(int picId) {
        this.picId = picId;
    }

    public int get_id() {
        return _id;
    }

    public void set_id(int _id) {
        this._id = _id;
    }

    public String getName() {
        return name;
    }

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

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public String getNum() {
        return num;
    }

    public void setNum(String num) {
        this.num = num;
    }

    public String getAddress() {
        return address;
    }

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

    public Shopping() {
    }

    public Shopping(int _id, String name, String color, String price, String num, String address){
    this._id = _id;
    this.name = name;
    this.color = color;
    this.price = price;
    this.num = num;
    this.address = address;
}

    public Shopping(int _id, String name, String color, String price, String num) {
        this._id = _id;
        this.name = name;
        this.color = color;
        this.price = price;
        this.num = num;
    }

    @Override
    public String toString() {
        return "Shopping{" +
                "_id=" + _id +
                ", name='" + name + '\'' +
                ", color='" + color + '\'' +
                ", price='" + price + '\'' +
                ", num='" + num + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}


2.*********************MySQLite****************************

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Created by Administrator on 2017/8/2.
 */
public class MySQLite extends SQLiteOpenHelper{
    public MySQLite(Context context) {
        super(context, "h.db", null, 1);
        // TODO Auto-generated constructor stub
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table shopping(" +
                "_id integer primary key autoincrement," +
                "name varchar(0)," +
                "color varchar(0)," +
                "price varchar(0)," +
                "num varchar(0))");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

3.********************************ShoppingDao*****************************

import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.example.administrator.shopping_king.bean.Shopping;

import java.util.ArrayList;

/**
 * Created by Administrator on 2017/8/2.
 */
public class ShoppingDao {

    private MySQLite mySQLite;
    private ArrayList<Shopping> list;

    public ShoppingDao(Context con) {
        mySQLite = new MySQLite(con);
    }

    // 添加
    public long addDate(String name, String color, String price, String num,String address) {

        SQLiteDatabase db = mySQLite.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("color", color);
        values.put("price", price);
        values.put("num", num);
//        values.put("address", address);

        long insert = db.insert("shopping", null, values);
//        db.close();
        return insert;
    }

    // 查询
    @SuppressLint("NewApi")
    public ArrayList<Shopping> query() {
        list = new ArrayList<Shopping>();
        SQLiteDatabase db = mySQLite.getWritableDatabase();
        Cursor query = db.query(false, "shopping", null, null, null, null, null,
                null, null, null);
        while (query.moveToNext()) {
            int _id = query.getInt(query.getColumnIndex("_id"));
            String name = query.getString(query.getColumnIndex("name"));
            String color = query.getString(query.getColumnIndex("color"));
            String price = query.getString(query.getColumnIndex("price"));
            String num = query.getString(query.getColumnIndex("num"));

            list.add(new Shopping(_id, name, color, price,num));
        }
        db.close();
        return list;

    }

    // 模糊查询
    @SuppressLint("NewApi")
    public ArrayList<Shopping> query(String ename) {
        list = new ArrayList<Shopping>();
        SQLiteDatabase db = mySQLite.getWritableDatabase();
        Cursor query = db.query("shopping", null, "name like ?", new String[]{"%"+ename+"%"} , null, null, null);
        while (query.moveToNext()) {
            int _id = query.getInt(query.getColumnIndex("_id"));
            String name = query.getString(query.getColumnIndex("name"));
            String color = query.getString(query.getColumnIndex("color"));
            String price = query.getString(query.getColumnIndex("price"));
            String num = query.getString(query.getColumnIndex("num"));

            list.add(new Shopping(_id, name, color, price,num));
        }
        db.close();
        return list;

    }

    // 删除
    public int delete(int _id) {

        SQLiteDatabase db = mySQLite.getWritableDatabase();
        int d = db.delete("shopping", "_id=?", new String[] { _id + "" });

        db.close();
        return d;

    }

    // 修改
    public int update(int _id, String name, String color, String price) {
        SQLiteDatabase db = mySQLite.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("color", color);
        values.put("price", price);
        values.put("_id", _id);

        int u = db.update("shopping", values, "_id=?", new String[] { _id + "" });
        db.close();
        return u;

    }
}

4.********************************MainActivity***********************************

import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.TextView;

import com.example.administrator.shopping_king.bean.Shopping;
import com.example.administrator.shopping_king.db.MySQLite;
import com.example.administrator.shopping_king.db.ShoppingDao;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private TextView t1;
    private TextView t2;
    private TextView t3;
    private ViewPager viewPager;
    private TextView t11;
    private TextView t22;
    private TextView t33;
    private MySQLite mySQLite;
    private ShoppingDao dao;
    private ArrayList<Shopping> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // 去掉头部
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        dao=new ShoppingDao(this);
        //初始化组件
        initView();
        initData();
    }

    private void initData() {

        mySQLite = new MySQLite(this);
        SQLiteDatabase readableDatabase = mySQLite.getReadableDatabase();

        dao = new ShoppingDao(this);
        list=new ArrayList<Shopping>();
        for (int i=0;i<100;i++){
            dao.addDate("香蕉"+i, "黄色", "123","10","北京海淀"+i);
        }


        //给ViewPager设置适配器
        viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                //根据ViewPager 索引 返回相应Fragment
                Fragment fragment = null;
                switch (position) {
                    case 0:
                        fragment = new Shop_Fragment();

                        break;
                    case 1:
                        fragment = new Manage_Fragment();
                        break;
                    case 2:
                        fragment = new State_Fragment();
                        break;

                    default:
                        break;

                }
                return fragment;
            }

            @Override
            public int getCount() {
                return 3;
            }
        });

        //给ViewPager设置滑动监听
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //根据position改变游标状态
                switch (position) {
                    case 0:
                        t11.setBackgroundColor(Color.RED);
                        t22.setBackgroundColor(Color.parseColor("#00000000"));
                        t33.setBackgroundColor(Color.parseColor("#00000000"));
                        break;
                    case 1:
                        t22.setBackgroundColor(Color.RED);
                        t11.setBackgroundColor(Color.parseColor("#00000000"));
                        t33.setBackgroundColor(Color.parseColor("#00000000"));
                        break;
                    case 2:
                        t33.setBackgroundColor(Color.RED);
                        t22.setBackgroundColor(Color.parseColor("#00000000"));
                        t11.setBackgroundColor(Color.parseColor("#00000000"));
                        break;
                    default:
                        break;
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

    private void initView() {
        t1 = (TextView) findViewById(R.id.t1);
        t2 = (TextView) findViewById(R.id.t2);
        t3 = (TextView) findViewById(R.id.t3);
        t11 = (TextView) findViewById(R.id.t11);
        t22 = (TextView) findViewById(R.id.t22);
        t33 = (TextView) findViewById(R.id.t33);
        viewPager = (ViewPager) findViewById(R.id.viewPager);

        // 设置监听
        t1.setOnClickListener(this);
        t2.setOnClickListener(this);
        t3.setOnClickListener(this);

        t11.setOnClickListener(this);
        t22.setOnClickListener(this);
        t33.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            //点击选项卡 跳转到对应的Fragment页
            case R.id.t1:
                viewPager.setCurrentItem(0);
                break;
            case R.id.t2:
                viewPager.setCurrentItem(1);
                break;
            case R.id.t3:
                viewPager.setCurrentItem(2);
                break;
            default:
                break;
        }
    }
}

5.***********************Shop_Fragment******************************

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SimpleCursorAdapter;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.administrator.shopping_king.bean.Shopping;
import com.example.administrator.shopping_king.db.MySQLite;
import com.example.administrator.shopping_king.db.ShoppingDao;

import java.util.ArrayList;

/**
 * Created by Administrator on 2017/8/2.
 */
public class Shop_Fragment extends Fragment{

    private View view;
    private ListView listView;
    private TextView tv_sum;
    private ArrayList<Shopping> list;
    private MySQLite mySQLite;
    private ShoppingDao dao;
    private MyBaseAdapter myBaseAdapter;
    // 初始价格和个数都是0
    int sum = 0;
    int count = 0;
    // 成员位置定义progress
    int progress = 0;
    private ProgressDialog dialog;
    Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            if (msg.what == 0) {
                // 当收到消息时,刷新界面
                myBaseAdapter.notifyDataSetChanged();
                //刷新一个总价格
                tv_sum.setText("总价格:"+sum);
            }
        };
    };
    private Button bt_pay;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.shop_fragment, container, false);
        listView = (ListView) view.findViewById(R.id.listView);
        tv_sum = (TextView) view.findViewById(R.id.tv_sum);
        bt_pay = (Button)view.findViewById(R.id.bt_pay);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        // 初始化弹框
        dialog = new ProgressDialog(getActivity());
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setTitle("正在删除...");
        dialog.setMax(100);

        mySQLite = new MySQLite(getActivity());
        dao = new ShoppingDao(getActivity());
        list=new ArrayList<Shopping>();
        list = dao.query();

        SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(getActivity(),
                R.layout.shop_list, null, new String[] { "name", "color", "price" },
                new int[] { R.id.tv_name, R.id.tv_color, R.id.tv_price });

        bt_pay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (sum == 0) {
                    Toast.makeText(getActivity(), "请选择商品再购买", Toast.LENGTH_SHORT).show();
                    return;
                }
                Intent intent = new Intent(getActivity(), SecondActivity.class);
                intent.putExtra("sum", sum);
                intent.putExtra("count", count);

//        Log.i(TAG, "count" + count);
                startActivity(intent);
            }
        });
        // 实例化数据适配器
        myBaseAdapter = new MyBaseAdapter();
        listView.setAdapter(myBaseAdapter);
        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                                           final int position, long arg3) {
                dialog.show();
                new Thread() {
                    public void run() {
                        while (progress < 100) {
                            progress = progress + 5;
                            dialog.setProgress(progress);
                            try {
                                sleep(100);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }

                        }
                        if (progress == 100) {
                            // 弹框消失
                            dialog.dismiss();
                            // progress=0;
                            progress = 0;
                            //在删除之前,应该先判断要删除的条目是否被选中了,如果是,要从总价格中减去该条目的价格,和个数
                            if(list.get(position).isChecked()){
                                sum=sum-Integer.parseInt(list.get(position).getPrice());
                                count--;
                            }
                            // 删除集合中该条目内容
                            list.remove(position);
                            // 刷新界面
                            handler.sendEmptyMessage(0);
                        }
                    };
                }.start();
                return false;
            }
        });
    }

    /**
     * 支付点击事件
     *
     * @param
     */
//    public void pay(View v) {
//
//        if (sum == 0) {
//            Toast.makeText(getActivity(), "请选择商品再购买", Toast.LENGTH_SHORT).show();
//            return;
//        }
//        Intent intent = new Intent(getActivity(), SecondActivity.class);
//        intent.putExtra("sum", sum);
//        intent.putExtra("count", count);
//
        Log.i(TAG, "count" + count);
//        startActivity(intent);
//    }

    class MyBaseAdapter extends BaseAdapter {
        private ViewHolder viewHolder;

        @Override
        public int getCount() {
            return list.size();
        }
        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView,
                            ViewGroup parent) {
            final ViewHolder viewHolder;
            if (convertView == null) {
                convertView = View.inflate(getActivity(),
                        R.layout.shop_list, null);
                viewHolder = new ViewHolder();
                convertView.setTag(viewHolder);
                viewHolder.tv_name = (TextView) convertView
                        .findViewById(R.id.tv_name);
                viewHolder.tv_price = (TextView) convertView
                        .findViewById(R.id.tv_price);
                viewHolder.checkBox = (CheckBox) convertView
                        .findViewById(R.id.checkBox);
                viewHolder.imageView = (ImageView) convertView
                        .findViewById(R.id.imageView);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            // onCheckedChangeListener
            // 在listView优化的时候,会因为重复监听导致界面bug,建议使用onClickListener
            // viewHolder.checkBox.setOnCheckedChangeListener(new
            // OnCheckedChangeListener() {
            //
            // @Override
            // public void onCheckedChanged(CompoundButton buttonView, boolean
            // isChecked) {
            // productsList.get(position).setChecked(isChecked);
            // if(isChecked){
            // sum = sum
            // + Integer.parseInt(productsList.get(position)
            // .getPrice());
            // count++;
            // }else{
            // sum = sum
            // - Integer.parseInt(productsList.get(position)
            // .getPrice());
            // count--;
            // }
            //
            // tv_sum.setText("总价格:" + sum);
            // }
            // });
            viewHolder.checkBox.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    boolean checked = viewHolder.checkBox.isChecked();
                    // 如果点击了,并且checkBox在这个时候选中了
                    if (checked) {
                        // 给javaBean 设置选中状态为true
                        list.get(position).setChecked(true);
                        sum = sum
                                + Integer.parseInt(list.get(position)
                                .getPrice());
                        count++;
                    }else{
                        // 给javaBean 设置选中状态为true
                        list.get(position).setChecked(false);
                        sum = sum
                                - Integer.parseInt(list.get(position)
                                .getPrice());
                        count--;
                    }
                    tv_sum.setText("总价格"+sum);
                }
            });

            // 设置数据
            viewHolder.tv_name.setText(list.get(position).getName());
            viewHolder.tv_price.setText(list.get(position).getPrice());
            viewHolder.imageView.setImageResource(list.get(position)
                    .getPicId());
            // checkBox 给checkBox设置当前的选中状态,如果对象中存的是true,代表是被选中,如果是false,之前没有被选中过
            viewHolder.checkBox.setChecked(list.get(position)
                    .isChecked());
            return convertView;
        }
    }
    class ViewHolder {
        CheckBox checkBox;
        TextView tv_name;
        TextView tv_price;
        ImageView imageView;
    }

}


6.************************************SecondActivity**********************************

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Intent intent = getIntent();
        int sum = intent.getIntExtra("sum", 0);
        int count = intent.getIntExtra("count", 0);

        TextView tv_sum = (TextView) findViewById(R.id.tv_sum);
        TextView tv_count = (TextView) findViewById(R.id.tv_count);
        //设置到textView上
        tv_sum.setText(sum+"");

        tv_count.setText(count+"");

    }
}

7.*****************************activity_main*******************************

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.administrator.shopping_king.MainActivity">


    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="wrap_content"
        android:layout_weight="9"
        android:layout_height="0dp" >
    </android.support.v4.view.ViewPager>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="horizontal" >

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/t1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ccc"
                android:gravity="center"
                android:padding="10dp"
                android:text="购 物 车" />

            <TextView
                android:id="@+id/t11"
                android:layout_width="match_parent"
                android:layout_height="2dp"
                android:background="#ff0000" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/t2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ccc"
                android:gravity="center"
                android:padding="10dp"
                android:text="订单管理" />

            <TextView
                android:id="@+id/t22"
                android:layout_width="match_parent"
                android:layout_height="2dp"

                android:gravity="center" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/t3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#ccc"
                android:gravity="center"
                android:padding="10dp"
                android:text="订单状态" />

            <TextView
                android:id="@+id/t33"
                android:layout_width="match_parent"
                android:layout_height="2dp"

                android:gravity="center" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

8.***********************activity_second****************************

<LinearLayout 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:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="购买成功" />

    <TextView
        android:id="@+id/tv_sum"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/tv_count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>


9.************************shop_fragment***********************************

<LinearLayout 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:orientation="vertical" >

    <ListView
        android:id="@+id/listView"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/tv_sum"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="总价格" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="pay"
            android:id="@+id/bt_pay"
            android:text="支付" />
    </LinearLayout>

</LinearLayout>

10.******************************shop_list**********************************

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <!-- focusable  是否抢夺(获取)焦点 -->
    <CheckBox
        android:id="@+id/checkBox"
        android:focusable="false"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_marginLeft="60dp"
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/checkBox"
        android:text="商品名称" />

    <TextView
        android:layout_marginLeft="60dp"
        android:id="@+id/tv_color"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_name"
        android:layout_toRightOf="@id/checkBox"
        android:text="商品颜色" />
    <TextView
        android:layout_marginLeft="60dp"
        android:id="@+id/tv_price"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv_name"
        android:layout_toRightOf="@id/checkBox"
        android:text="商品价格" />
    <ImageView
        android:layout_marginLeft="60dp"
        android:id="@+id/imageView"
        android:layout_toRightOf="@id/tv_price"
        android:src="@mipmap/ic_launcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

11.**********************清单文件——读取权限**********************************

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值