转眼又是半个月过去了,很明显在过去的半个月中,极度沉沦在LOL中不能自拔,不但荒废了学业,还搞得自己人不像人鬼不像鬼,基本上天天想的,讲的,做的都是游戏,当发现自己在这个无底洞中越陷越深的时候,才知道一个人失去自我时的可怕,没有勇气,没有斗志,整天就知道偷塔,GANK……
这里不是说游戏害人啊什么的,想想自己还是喜欢玩游戏的,约上三五个好友,一起撸一把,那还是很韵味的。
话不多说,这个额尔半月白天浑浑噩噩,全无斗志,晚上有把精力耗在了游戏上,导致android的文件存储和访问这个章节中出现了很多漏洞,看来这几个礼拜是没有游戏玩了,准备天天晚上补一点,还有个文件浏览器的项目,真是有点烦啊。好在文件浏览器还有4天交货,不然我撸到明天早上上也高步出来。
刚刚才我看完service的ppt,试着写了两把,还不怎么熟悉,就写点文件方面的吧。
你说一个程序没有文件访问是个什么东西,没错,就是个没用的废物,所以任何语言的高级编程必有IO这个不提,IO是定式的,只要掌握IO的模式,那么几百G的硬盘就随你操弄(貌似有点邪恶的说)
android的IO跟java的IO是一样的,这大大减少了我自学的难度,不过还是有他自己的接口和对象的:
contentprovider/contentrescrove这两个类分别是数据的提供者和接收者,而两者的相互识别就考URI了不没什么好说,一些死套路了,学好活用,你就掌握了,上代码:
//这段代码继承了contentprovider类,重写六个函数,我实现了delete,其余的也一样,按套路来就行了
public class PersonProvider extends ContentProvider {
private DBhelper db;
private static final UriMatcher urimatcher;
private static final String AUTHORITY = "com.newer.comtentprovider";
private static final String PATH_DIR = "person";
private static final int CODE_DIR = 0;
private static final int CODE_ITEM = 1;
private static final String PATH_ITEM = "person/#";
private static final Uri CONTENT_URI = Uri.parse("content://"+AUTHORITY+"/"+PATH_DIR);
static{
urimatcher = new UriMatcher(UriMatcher.NO_MATCH);
urimatcher.addURI(AUTHORITY, PATH_DIR, CODE_DIR);
urimatcher.addURI(AUTHORITY, PATH_ITEM, CODE_ITEM);
}
@Override
public boolean onCreate() {
db = new DBhelper(getContext());
return false;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// TODO Auto-generated method stub
return null;
}
@Override
public String getType(Uri uri) {
switch (urimatcher.match(uri)) {
case CODE_DIR:
return ContentResolver.CURSOR_DIR_BASE_TYPE+PATH_DIR;
case CODE_ITEM:
return ContentResolver.CURSOR_ITEM_BASE_TYPE+PATH_ITEM;
default:
break;
}
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO Auto-generated method stub
return null;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int count = 0;
SQLiteDatabase database = db.getWritableDatabase();
switch (urimatcher.match(uri)) {
case CODE_DIR:
count = database.delete(DBhelper.TABLE_NAME, selection, selectionArgs);
break;
case CODE_ITEM:
String select = uri.getPathSegments().get(1);
count = database.delete(DBhelper.TABLE_NAME, DBhelper._ID+"="+select, selectionArgs);
break;
default:
break;
}
return count;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}
}