Android错误 transfer error: Read-only file system
然后Widget无法安装和执行!在参考了官方论坛上的相同问题的一个帖子后,也没有实质的解决办法(主要是楼主不厚道,解决了也不说明如何解决)。
最终还是自己摸索解决了,因为我用的是win7,默认启动SDK中的Eclipse不是管理员权限,导致如上错误。
解决的办法是:
1、打开AVD所在的目录(默认是C:Users你的名称.android),将.android目录及其子目录的只读属性去掉;
2、在SDK的Eclipse.exe上右键选择“以管理员身份运行”,然后启动SDK再运行widget;
需要注明的是这个是win7下的解决办法,我是直接用的WAC SDK进行安装测试的。
其它区别总结
1. 出现“Project has no target set. Edit the project properties to set one.”的错误
Eclipse导入步骤:
1. File.../Import.../General/Existing Projects into Workspace
2. 点Browse按钮,选择要导入的项目所在目录,点Finish
3. 如果出现“Project has no target set. Edit the project properties to set one.”的错误,则需要在该项目的属性里选中Project Build Target的Android版本
4. 文件夹中会自动追加一个gen的小目录,里面是自动生成的R.java文件,如果导入的文件中已有R.java,则会报错,此时只要将原来的R.java文件删掉即可。
如果有提示关于AndroidManifest.xml的错误,请选中此项目,并右键选择Android Tools->Fix Project,将会自动帮你修复错
误。
2. Could not find *.apk
1) 选择工程的Properties->Java Build Path->Libraries,去掉默认的Android包;
2) 点击左侧的Android标签,在右边的Project Build Target中选择Android 2.0;
3) 右键单击工程,选择Android Tools->Fix Project Properties.
有时候也可能是jdk版本的问题,改了jdk版本后,重启下eclipse
3、emulator: ERROR: the user data image is used by another emulator. Aborting
没有正常关闭导致的,删除android-sdk-windows/.android/avd/对于版本/下的以.lock结尾的文件夹就行
4. qemu: could not open disk image E:/Android/sdcard.img
我们知道安卓系统中通话时长应该是归Callog管,所以建议去查查ContactProvider,或者是TelephonyProvider
Service测试
可以的通话开始的时候启动Service 记录当前时间A, 然后stopSelf(); 另外在通话结束的时候再次启动一下Service,再次获得当前时间B, 然后把时间A和B进行比较处理
String time = Long.toString(比较后处理的时间)
然后调用
代码如下 | 复制代码 |
Toast.makeText(this, time, Toast.LENGTH_SHORT).show(); |
使之显示出来 ,再stopSelf();
获取联系人通话时间的长短java代码
代码如下 | 复制代码 |
Cursor cursor = getContentResolver().query(Calls.CONTENT_URI, new String[] { Calls.DURATION, Calls.TYPE, Calls.DATE }, null, null, Calls.DEFAULT_SORT_ORDER); MainActivity.this.startManagingCursor(cursor); boolean hasRecord = cursor.moveToFirst(); long incoming = 0L; long outgoing = 0L; int count = 0; while (hasRecord) { int type = cursor.getInt(cursor.getColumnIndex(Calls.TYPE)); long duration = cursor.getLong(cursor.getColumnIndex(Calls.DURATION)); switch (type) { case Calls.INCOMING_TYPE: incoming += duration; break; case Calls.OUTGOING_TYPE: outgoing += duration; default: break; } count++; hasRecord = cursor.moveToNext(); } Toast.makeText(MainActivity.this, "共计 " + count + "次通话 . 总通话时长 " + (incoming + outgoing) + "秒. 其中接听 " + incoming + " 秒, 拔打 " + outgoing + " 秒.", Toast.LENGTH_LONG).show(); |
原意是备份一个hosts文件,然后修改hosts的内容的(作用大家懂的),用RE复制,然后粘贴就出现这个乱码的文件了,用RE删,提示删除成功,但再次进入/etc又会出现这个文件,我删了N次这个文件都阴魂不散,彻底晕倒了。
由于hosts文件在手机rom中,把手机接上电脑只能看到TF卡上的内容,所以只能在手机上想办法了。
最后,解决办法是通过终端(shell)把它OK掉(删掉),估计用USB接到电脑用adb shell也可以,我没试验过。
手机需要装上的软件如下:
Better Terminal Emulator(超级终端)
Root Explorer(简称RE)
超级终端的好处是基本与linux的终端一致,可以用tab键自动补全路径(重点),在超级终端中tab键是 控制键+数字键9 ,我把控制键设为音量放大键,所以是按 音量放大键+9。
自动补全路径:例如路径是/usr/bin/autostart.sh
那么输入/usr/bin/aut 按tab就能补全为 /usr/bin/autostart.sh
这样就能使不能输入的乱码字符自动补上了。
步聚:
1、打开终端后用 ls 命令查看要删除的文件名
ls -a 文件路径
-a 表示显示隐藏文件
eg: ls -a /etc/
2、用 rm 命令删除文件,如果路径存在空格则要用双引号(”")把路径括起来。
rm -f 文件路径
-f 不询问直接删除
eg: rm -f “/etc/hosts -乱码部份”
如果提示 read-only system,则用RE挂载为读写。
以上,折腾完毕。(原文:安卓主题下载网)
本文章介绍了Android Sqlite 数据应用与初始化,有需要的同学可参考一下创建数据库
Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQLiteOpenHelper 的子类,至少需要实现三个方法:
•构造函数,调用父类 SQLiteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。
•onCreate()方法,它需要一个 SQLiteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。
•onUpgrage() 方法,它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。
下面示例代码展示了如何继承 SQLiteOpenHelper 创建数据库:
代码如下 | 复制代码 |
public class DatabaseHelper extends SQLiteOpenHelper { |
接下来讨论具体如何创建表、插入数据、删除表等等。调用 getReadableDatabase() 或 getWriteableDatabase() 方法,你可以得到 SQLiteDatabase 实例,具体调用那个方法,取决于你是否需要改变数据库的内容:
代码如下 | 复制代码 |
db=(new DatabaseHelper(getContext())).getWritableDatabase(); return (db == null) ? false : true; |
上面这段代码会返回一个 SQLiteDatabase 类的实例,使用这个对象,你就可以查询或者修改数据库。
当你完成了对数据库的操作(例如你的 Activity 已经关闭),需要调用 SQLiteDatabase 的 Close() 方法来释放掉数据库连接。
android系统下每个程序的数据存放在 /data/data/(package name)/ 目录下,数据库则是在/dababases/目录下..
所以,你只要用FileInputStream读取原数据库,再用FileOutputStream把读取到的东西写入到那个目录就可以了..
操作方法:
1. 把原数据库包括在项目源码的 res/raw 目录下.
2.创建一个类来控制database..如下:
代码
代码如下 | 复制代码 |
public class DatabaseManager{ private SQLiteDatabase database; DBManager(Context context) { public void openDatabase() { private SQLiteDatabase openDatabase(String dbfile) { |
然后在需要用到数据库的时候,用实例化一个DatabaseManager类,调用其openDatabase方法就可以返回一个
SQLiteDatabase对象了..如下:
代码
代码如下 | 复制代码 |
SQLiteDatabase db = new DBManager(this).openDatabase(); |
这里只是安卓手机开发的一个角
代码:
代码如下 | 复制代码 |
Dialog ad = new Dialog(context); ad.show(); Window window = ad.getWindow(); window.setBackgroundDrawable(new ColorDrawable(0)); window.setContentView(R.layout.cancel_sos_dialog); |
最好的办法是第二种:
代码如下 | 复制代码 |
AlertDialog ad = new AlertDialog.Builder(context).create(); ad.setView(ManagerDialogLayout_.build(context,ad)); ad.show(); Window window = ad.getWindow(); window.setContentView(ManagerDialogLayout_.build(context,ad)); |
在调用show方法前先调用setView(layout),show后再调用window.setContentView(layout),两个Layout布局应该是相同的。
至于原因,暂时不明,但是确实解决了问题,在EditText上点击,可以调出软键盘,输入法了。
相关文章
Ecshop提示Only variables should be passed by reference in错误
在安装好ecshop软件之后我们打开首页时提示Only variables should be passed by reference in错误了,碰到这个问题是什么原因呢?下面我们就一起来看看解决办法吧。...2016-11-25- 409错误是什么?http 409错误怎么解决呢?不少站长在遇到这个错误代码之后都一筹莫展,本次一聚教程网为大家带来了详细的说明,快来看看吧。 409错误是什么: HTTP 40...2017-01-22
- 414错误是HTTP协议状态码中的一种,很多都还不知道414错误是什么,以及不知道怎么解决414错误,那么就来看看小编带来的介绍吧。 414错误是什么: HTTP 414错误,(Requ...2017-01-22
- http 405错误是什么?http 405错误怎么解决?相信很多站长都在找这两个问题的答案,本次小编为大家带来了详细的教程,快来看看吧。 405错误是什么: HTTP 405错误是H...2017-01-22
- 401是HTTP状态码的一种,属于“请示错误”,表示请求可能出错,已妨碍了服务器对请求的处理。具体的401错误是指:未授权,请求要求进行身份验证。登录后,服务器可能会返回对页面...2017-01-22
- http 402错误是什么?402错误较为少见,一般不轻易出现,下面小编就来告诉大家402错误是什么吧。 HTTP 402错误是HTTP状态码的一种,表示“要求付费”; 所求的...2017-01-22
- 411错误是HTTP协议状态码的一种,很多人都还不知道411错误是什么,本次一聚教程网将为大家进行解答,并且告诉大家411错误怎么解决。 411错误是什么: HTTP 411错误,(Lengt...2017-01-22
- Apache status 503 的原因大致有如下几种情况 : 1、 CPU 负载过高,服务器响应不过来,返回503 2、 系统连接数超限,超过MaxVhostClients的上限,返回503 3、 单IP连接数超限,超过M...2016-01-28
- 403错误是网站访问过程中,常见的错误提示。资源不可用,服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致,比如IIS或者apache设置了访问权限...2017-01-22
- 403错误是HTTP状态码的一种,属于“请示错误”,表示服务器拒绝请求。如果在搜索引擎尝试抓取您网站上的有效网页时显示此状态代码,那么,这可能是您的服务器或主机拒绝搜索...2017-01-22
- 412错误是什么?412错误怎么解决?本次一聚教程网将为大家带来详细的介绍,帮助大家全面了解412错误的意思以及解决412错误的方法。 412错误是什么: HTTP 412错误,(Precond...2017-01-22
- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
- HTTP 406错误是HTTP协议状态码的一种,表示无法使用请求的内容特性来响应请求的网页。一般是指客户端浏览器不接受所请求页面的 MIME 类型。 而MIME类型是在把输出...2017-01-22
- 407错误是什么?407错误怎么解决?不少站长都遇到过407错误,下面小编将告诉大家如何处理407错误。 407错误是什么: HTTP 407错误是HTTP协议状态码的一种,表示需要代...2017-01-22
- 这篇文章主要介绍了c++中system("pause")的作用和含义,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2020-04-25
- 410错误是HTTP协议状态码的一种,本次一聚教程网将为大家详细介绍HTTP 410错误是什么,以及410错误的解决办法。 410错误是什么: HTTP 410错误是HTTP协议状态码的...2017-01-22
- 每当遇到http错误代码为400,代表客户端发起的请求不符合服务器对请求的某些限制,或者请求本身存在一定的错误,那么HTTP 400错误怎么解决呢?请看下文介绍。 目前400错...2017-01-22
PHP Fatal error: Cannot use object of type stdClass as array in错误
下面一起来看看在php开发中碰到PHP Fatal error: Cannot use object of type stdClass as array in错误问题的解决办法吧。 普通的数组出现如下错误 代码...2016-11-25- 自己用的小PHP应用,使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果...2014-05-31