为了账号安全,请及时绑定邮箱和手机立即绑定

Android攻城狮的第二门课(第3季)

难度初级
时长 6小时 0分
学习人数
综合评分9.57
162人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.3 逻辑清晰
  • DemoContentProvider II @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ContentResolver cr=getContentResolver(); //向联系人中插入一行数据 ContentValues values=new ContentValues(); Uri uri=cr.insert(RawContacts.CONTENT_URI, values); Long raw_contact_id=ContentUris.parseId(uri); //插入人名 values.put(StructuredName.RAW_CONTACT_ID, raw_contact_id); values.put(StructuredName.DISPLAY_NAME, "慕课网"); values.put(StructuredName.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE); uri=cr.insert(Data.CONTENT_URI, values); //插入电话信息 values.clear(); values.put(Phone.RAW_CONTACT_ID, raw_contact_id); values.put(Phone.NUMBER, "15555221010"); values.put(Phone.MIMETYPE, Phone.CONTENT_ITEM_TYPE); uri=cr.insert(Data.CONTENT_URI, values); } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • DemoContentProvider I(下) //根据联系人的ID查询联系人的邮箱地址 Cursor c2=cr.query(Email.CONTENT_URI, new String[]{Email.DATA,Email.TYPE}, Email.CONTACT_ID+"="+id, null, null); if(c2!=null){ while(c2.moveToNext()){ int type=c2.getInt(c2.getColumnIndex(Email.TYPE)); String data=c2.getString(c2.getColumnIndex(Email.DATA)); if(type==Email.TYPE_WORK){ Log.i("TAG", "工作邮箱:"+data); } } c2.close(); } } c.close(); } } <uses-permission android:name="android.permission.READ_CONTACTS"></uses> 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • DemoContentProvider I(上) onCreate{ ContentResolver cr = getContentResolver(); Cursor c=cr.query(Contacts.CONTENT_URI, new String[]{Contacts._ID,Contacts.DISPLAY_NAME}, null, null, null); if(c!=null){ while(c.moveToNext()){ int id=c.getInt(c.getColumnIndex("_id")); String name=c.getString(c.getColumnIndex("display_name")); Log.i("TAG", "_id:"+id); Log.i("TAG", "name:"+name); Cursor c1=cr.query(Phone.CONTENT_URI, new String[]{Phone.NUMBER,Phone.TYPE}, Phone.CONTACT_ID+"="+id, null, null); //根据联系人的ID查询联系人的电话号码 if(c1!=null){ while(c1.moveToNext()){ int type=c1.getInt(c1.getColumnIndex(Phone.TYPE)); String number=c1.getString(c1.getColumnIndex(Phone.NUMBER)); if(type==Phone.TYPE_HOME){ Log.i("TAG", "家庭电话:"+number); }else if(type==Phone.TYPE_MOBILE){ Log.i("TAG", "手机号码:"+number); } } c1.close(); } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • ContentResolver(下) 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • ContentResolver(上) 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • UriMatcher类 如果匹配就返回匹配码,匹配码是调用addURI()方法传入的第三个参数。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 何为Uri?! 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • public class MyContentProvider extends ContentProvider { public MyContentProvider() { // TODO 自动生成的构造函数存根 } @Override//在ContentProvider创建后被调用 public boolean onCreate() { // TODO 自动生成的方法存根 return false; } @Override//根据Uri查询selection指定的条件所匹配的全部记录;并且可以指定查询哪些列以什么方式(order)排序 public Cursor query(...) { // TODO 自动生成的方法存根 return null; } /** *返回当前Uri的MIME类型。 *如果该Uri对应的数据包括多条记录,则MIME类型字符串以“vnd.android.dir/开头”; *如果该Uri对应的数据只有一条记录,则MIME类型字符串以“vnd.android.cursor.item/开头”。 */ @Override public String getType(Uri uri) { // TODO 自动生成的方法存根 return null; } @Override//根据Uri插入Values对应的数据 public Uri insert(...) { // TODO 自动生成的方法存根 return null; } @Override//根据Uri删除selection指定的条件所匹配的全部记录 public int delete(...) { // TODO 自动生成的方法存根 return 0; } @Override//根据Uri修改selection指定的条件所匹配的全部记录 public int update(...) { return 0; } } Ps:比如你ContentProvider实现了增和删方法,其他APP也只能使用这两个功能。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • onCreate{ btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { writeFile(et.getText().toString()); tv.setText(readFile()); } }); } //写入文件内容 public void writeFile(String content){ try { FileOutputStream fos = openFileOutput("temp.txt", MODE_PRIVATE);//若文件不存在,自动创建 fos.write(content.getBytes()); fos.close(); } catch (FileNotFoundException e) { ... } } //读取文件内容 public String readFile(){ String content=""; try { FileInputStream fis=openFileInput("temp.txt"); ByteArrayOutputStream baos=new ByteArrayOutputStream();//可以捕获内存缓冲区的数据,转换成字节数组 byte[] buffer=new byte[1024]; int len=0; while((len=fis.read(buffer))!=-1){ baos.write(buffer,0,len); } content=baos.toString(); fis.close(); baos.close(); } catch (FileNotFoundException e) { ... } return content; } Ps:多个MODE表示:如:MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
    0 采集 收起 来源:文件操作案例

    2018-03-22

  • onCreate{ /*File file=new File("/mnt/sdcard/test"); if(!file.exists()){ try { file.createNewFile(); Toast...; } catch (IOException e) { e.printStackTrace(); } }else{ Toast...; }*/ //file.delete(); //File file; //这个目录是当前APP默认的数据存储目录 //file=this.getFilesDir(); //这个目录是当前APP默认的缓存文件的存放位置。把一些不是很重要的文件在此处创建、使用;如果手机内存不足时,系统会自动删除APP的cache目录的数据 //file=this.getCacheDir(); // /data/data/<包名>/app_自定义名,如:app_imooc //file=this.getDir("imooc", MODE_PRIVATE); //可以得到外部的存储位置,该位置的数据跟内置的使用是一样的;如果APP卸载了,这里面的数据也会自动清除掉 //file=this.getExternalFilesDir(String type); //file=this.getExternalCacheDir(); //如果开发者不遵守这样的规则,不把数据放入“/data/data/<包名>”或“/mnt/sdcard/Android/data/<包名>”;则APP卸载之后,数据将不会自动清楚掉,将会造成所谓的数据垃圾; //对于残留垃圾而言,但是如果觉得数据很重要,下次安装可以保留,则可以不遵守这样的规则。 //Log.i("TAG", file.toString()); } Ps1:可读可写:MODE_WORLD_READABLE+MODE_WORLD_WRITEABLE Ps2:this.get...();//获取路径并创建。 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
    0 采集 收起 来源:File类方法介绍

    2018-03-22

  • protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); File file=new File("/mnt/sdcard/test"); if(!file.exists()){ try { file.createNewFile(); Toast.makeText(MainActivity.this, "文件创建成功!", Toast.LENGTH_SHORT).show(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } }else{ Toast.makeText(MainActivity.this, "文件已存在!", Toast.LENGTH_SHORT).show(); } //file.delete(); } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • DemoSQLite III(下) public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper(Context context, String name) { super(context, name,null,1); // TODO 自动生成的构造函数存根 } public DBOpenHelper(Context context, String name, CursorFactory factory, int version, DatabaseErrorHandler errorHandler) { super(context, name, factory, version, errorHandler); // TODO 自动生成的构造函数存根 } @Override//首次创建数据库的时候调用,一般用来建库/建表的操作 public void onCreate(SQLiteDatabase db) { // TODO 自动生成的方法存根 db.execSQL("create table if not exists stutb(_id integer primary key autoincrement,name text not null,sex text not null,age integer not null)"); db.execSQL("insert into stutb(name,sex,age)values('张三','女',18)"); } @Override//当数据库的版本发生变化的时候会自动执行 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO 自动生成的方法存根 } } 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
    3 采集 收起 来源:SQLiteOpenHelper

    2018-03-22

  • SQLite Cursor:游标接口,提供了遍历查询结果的方法,如 getColumnIndexOrThrow(String columnName)--根据列名称获得列索引 getInt(int columnIndex)--获得指定索引的int类型值 move(int offset)--移动到指定记录 moveToPrevious()--移动到上一条记录
    查看全部
  • cursor 常用方法
    查看全部
  • cursor
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Android开发课程的中后期部分,学习之前要求对一些知识点有一定的了解: 1、已经掌握了Java基础 2、已经熟悉或者了解Android中的监听事件原理 3、已经熟悉或者了解一种以上的数据库,并掌握基本的SQL语句
老师告诉你能学到什么?
1、初步掌握Android手势识别的原理以及实际使用 2、初步掌握Android的数据存储方式 3、深度了解Android中的组件 4、熟悉了解Android常用的系统服务并对服务的使用有新的认识

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!