安卓开发提示Android Read-only file system 错误处理

 更新时间:2016年9月20日 20:00  点击:2375
安卓开发提示Android Read-only file system 错误处理办法,有需要学习的机友可参考参考。

以超级管理员root执行

 代码如下 复制代码

“mount -o remount rw /

设置system目录可读写权限

 代码如下 复制代码

“mount -o remount,rw rootfs /system/

友情提示:root权限有很多种方法,如现在的刷新软件几乎都可以获取ROOT权限了,这里就不讲了。

不小心删除了Android铃声解决办法,有碰到此类问题的朋友可参考参考。

 自从Android平台推出了一款可以取得系统最高ROOT权限的资源管理器之后,就有很多G2机友拿自己的手机来试这款软件删除Android系统自带的一些组件,不过有些网友经常误删一些系统组件,就拿铃声组件来说吧。删除之后就没有手机铃声和短信铃声的支持了。那么误删Android铃声组件怎么办呢?

  误删了系统铃声组件之后最明显的结果就是,当G2来电话或者接到短信的时候就不会出现铃声提示了,如果手机设置了来电振动或短信振动,那么HTC G2就只会振动。

  下面我们来讲解决办法。严格意义上来讲,这种误删是没有办法在删除之后还原的,除非有删除文件的备份,而且记下了精确的文件储存位置,同样使用这款资源管理器将文件还原并重启。

  如果没有删除文件的备份,那么就只能重新恢复系统,也就是硬启HTC G2来还原系统文件了。

 

安卓环境搭建之jdk+eclipse+android_sdk+adt的安装和配置技术文章有需要学习的朋友可参考参考。

 

所用到的URL如下:

JDK:http://java.sun.com/javase/downloads/index.jsp(Java SE Development Kit 6u20)

Eclipse:http://www.eclipse.org/downloads/(Eclipse Classic 3.6.0)

Android SDK:http://androidappdocs.appspot.com/sdk/index.html(android-sdk_r06-windows)

ADT:http://androidappdocs.appspot.com/sdk/eclipse-adt.html(ADT-0.9.7)

1、下载JDK(Java SE Development Kit 6u20)。

2、安装至默认路径 C:Program FilesJava,硬盘空间不紧张的话,所有组件全部安装。

3、配置系统环境变量:

打开:我的电脑—控制面板—系统属性—高级—环境变量,对话框下半部分系统变量中,新增以下两个变量:

变量名:JAVA_HOME

变量值:C:Program FilesJavajdk1.6.0_20

变量名:CLASSPATH

变量值:.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar

然后,修改以下变量:

变量名:Path

变量值:将“%JAVA_HOME%bin;”添加在原变量值之前

至此,在ms-dos窗口执行命令 java -version,看到如下结果,就说明JDK安装、配置完成。


4、下载Eclipse(Eclipse Classic 3.6.0)。

5、解压缩至目录(可按自己习惯指定)C:Program FilesJava 即可,无需安装。

6、运行程序C:Program FilesJavaeclipseeclipse.exe,弹出以下对话框要求配置工作目录:

指定工作目录(可按自己习惯指定)如下:

 

7、下载Android SDK Quick Start版(android-sdk_r06-windows)。

8、解压缩目录(可按自己习惯指定)C:Program FilesJava,准备安装。

9、运行程序C:Program FilesJavaandroid-sdk-windowsSDK Setup.exe

 

于是,在下图所示左侧打开Settings标签页,并配置代理服务器、端口如图,同时勾选“Force https://… …………”,端口号如有冲突,可更加实际需要更改

 

回到Available Packages标签页:

 

勾掉Display Updates Only前面的复选框,展开网址前的三角,得更新后可升级包列表,并选中其中5个安装包:

 

点击Install Selected按钮,

 

选择Accept All,然后点击Intall按钮开始下载、安装,

 

至此,Android SDK 2.2/1.5 安装完毕,同时安装了Windows环境下必须的USB驱动程序、相应SDK 2.2版本的文档Documents、范例Samples,可在目录C:Program FilesJavaandroid-sdk-windows下查看相关内容。


10、配置系统环境变量:

打开:我的电脑—控制面板—系统属性—高级—环境变量,对话框下半部分系统变量中,修改以下变量:

变量名:Path

变量值:将“C:Program FilesJavaandroid-sdk-windowstools;”添加在原变量值之前

其中C:Program FilesJavaandroid-sdk-windowstools是Android SDK的tools目录,然后在ms-dos窗口能够执行命令android –h如下,就说明Android SDK安装完成。


11、安装Eclipse中用于Android开发的插件ADT(Android Development Tools)【若网络连接不通畅,参见本文末尾说明】:

首先运行eclipse.exe,选择菜单Help—Install New Software…

打开以下窗口:

 

点击Add…,Name处输入(按自己习惯)Android ADT,Location处填写下面的网址:https://dl-ssl.google.com/android/eclipse/ 如下:

 

OK后,Pending…得下图:

点击Select All,然后Next…

继续Next…

择I accept…,然后Finish

and…

OK…

restart now重启

12、Eclipse中配置Android SDK位置:首先运行eclipse.exe,选择菜单Windows—Preferen…

打开的对话框中,左侧选择Android,会提醒The location of the Android SDK…

输入Android SDK安装位置,如下:

Apply后,会检测出已安装SDK版本1.5、2.2,OK即可。

13、Eclipse中配置Android模拟器AVD:选择菜单Eclipse菜单Windows—Android SDK and AVD Manager…

在打开的对话框中点击New…,新窗口中填上模拟器Name,选择模拟的SDK版本,指定模拟器SD卡容量、显示屏类型,Create即可,如下图示:

继续创建针对SDK 2.2的模拟器Android-SDK-2-2,最终得AVD列表如下图:

到此,已经可以正常的使用Eclipse进行Java程序设计、Android应用开发。

C:Program FilesJava目录下有四个子目录:

(1)android-sdk-windows:Android SDK安装目录

(2)eclipse:Eclipse IDE免安装目录

(3)jdk1.6.0_20:JDK安装目录

(4)jre6:JRE安装目录

Eclipse的工作目录被设置到:D:workspace

Android AVD被配置到:C:Documents and SettingsAdministrator.androidavd

Android AVD设备也可以使用命令行方式创建,可参见相关资料。

当网络不通畅时,前述步骤9、步骤11均可以采用先下载安装包,再进行本地安装。其中Android SDK可以从其他已安装好的计算机上(C:Program FilesJavaandroid-sdk-windows整个目录)直接拷贝过来,然后运行setup.exe进行配置即可;从别处复制ADT-0.9.7.zip文件到本机,然后建立本地网站指向该文件即可安装

安卓手机怎么修改改桌面图标的行数和列数要修改之前我们需要有ROOT权限才可以哦,具体操作如下。


横屏:找到此文件

 代码如下 复制代码

froyopackagesappsLauncher2reslayout-landworkspace_screen.xml

竖屏

 代码如下 复制代码

froyopackagesappsLauncher2reslayout-portworkspace_screen.xml

修改里面格子的数量

 代码如下 复制代码

launcher:shortAxisCells=”4″

launcher:longAxisCells=”4″

还可以调整一下格子们与左右和上下的边距

 代码如下 复制代码

launcher:longAxisStartPadding=”65dip”

launcher:longAxisEndPadding=”65dip”

launcher:shortAxisStartPadding=”0dip”
launcher:shortAxisEndPadding=”0dip”

android中的sqlite实现程序 有需要学习的朋友可参考参考。

新建项目Events,项目的主程序文件有:Events.java、EventsData.java、Constants.java;布局文件有item.xml。

Events.java文件是项目的入口文件,大致如下:

 代码如下 复制代码

package org.hxsd.events;
 
import static android.provider.BaseColumns._ID;
import static org.hxsd.events.Constants.TABLE_NAME;
import static org.hxsd.events.Constants.TIME;
import static org.hxsd.events.Constants.TITLE;
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.SimpleCursorAdapter;
 
public class Events extends ListActivity {
 private EventsData events;
 //查询的字段
 private static String[] FROM = {_ID, TIME, TITLE};
 //排序
 private static String ORDER_BY = TIME + " DESC";
 //显示
 private static int[] TO = {R.id.rowid, R.id.time, R.id.title};
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        events = new EventsData(this);
        try{
         //添加记录
         addEvent("Hello, Android!");
         //获得记录信息
         Cursor cursor = getEvents();
         //显示记录信息
         showEvents(cursor);
        }finally{
         //关闭数据库
         events.close();
        }
    }
 
    /**
     * 添加数据
     * @param string
     */
    private void addEvent(String string){
     SQLiteDatabase db = events.getWritableDatabase();
     ContentValues values = new ContentValues();
     values.put(TIME, System.currentTimeMillis());
     values.put(TITLE, string);
     db.insertOrThrow(TABLE_NAME, null, values);
    }
 
    /**
     * 获得记录
     * @return
     */
    private Cursor getEvents(){
     SQLiteDatabase db = events.getReadableDatabase();
     Cursor cursor = db.query(TABLE_NAME, FROM, null, null, null, null, ORDER_BY);
     startManagingCursor(cursor);
     return cursor;
    }
 
    /**
     * 显示记录
     * @param cursor
     */
    private void showEvents(Cursor cursor){
     /*StringBuilder builder = new StringBuilder("Saved events:n");
     while(cursor.moveToNext()){
      long id = cursor.getLong(0);
      long time = cursor.getLong(1);
      String title = cursor.getString(2);
      builder.append(id).append(": ");
      builder.append(time).append(": ");
      builder.append(title).append("n");
     }
     TextView textView = (TextView) findViewById(R.id.TextView01);
     textView.setText(builder);*/
 
     SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.item, cursor, FROM, TO);
     setListAdapter(adapter);
    }
}
EventsData.java文件大致如下:

package org.hxsd.events;
 
import static android.provider.BaseColumns._ID;
import static org.hxsd.events.Constants.TABLE_NAME;
import static org.hxsd.events.Constants.TIME;
import static org.hxsd.events.Constants.TITLE;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
 
public class EventsData extends SQLiteOpenHelper{
 //数据库名称
 private static final String DATABASE_NAME = "events.db";
 //数据库版本
 private static final int DATABASE_VERSION = 2;
 
 //构造函数
 public EventsData(Context ctx){
  super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
 }
 
 @Override
 public void onCreate(SQLiteDatabase db) {
  // 创建数据表events
  db.execSQL("CREATE TABLE " + TABLE_NAME + "(" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + TIME + " INTEGER," + TITLE + " TEXT NOT NULL)");
 }
 
 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  //如果版本有改动,删除表events然后新建
  db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
  onCreate(db);
 }
 
}

Constants.java文件大致如下:

 

 代码如下 复制代码

package org.hxsd.events;
 
import android.provider.BaseColumns;
 
public interface Constants extends BaseColumns{
 //表名称
   public static final String TABLE_NAME = "events";
   //字段名称
   public static final String TIME = "time";
   public static final String TITLE = "title";
}
item.xml文件为布局文件,位于res文件夹下的layout下面,大致如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dip"
    android:orientation="horizontal"
    >
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/rowid"
    android:paddingRight="40dip"/>
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/time"
    android:layout_toRightOf="@id/rowid"
    android:paddingRight="40dip"/>
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/title"
    android:layout_toRightOf="@id/time"
    android:paddingRight="40dip"/>
</RelativeLayout>

[!--infotagslink--]

相关文章

  • 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 409错误怎么解决呢?不少站长在遇到这个错误代码之后都一筹莫展,本次一聚教程网为大家带来了详细的说明,快来看看吧。 409错误是什么: HTTP 40...2017-01-22
  • 414错误是什么 414错误怎么解决

    414错误是HTTP协议状态码中的一种,很多都还不知道414错误是什么,以及不知道怎么解决414错误,那么就来看看小编带来的介绍吧。 414错误是什么: HTTP 414错误,(Requ...2017-01-22
  • http 405错误是什么 http 405错误怎么解决

    http 405错误是什么?http 405错误怎么解决?相信很多站长都在找这两个问题的答案,本次小编为大家带来了详细的教程,快来看看吧。 405错误是什么: HTTP 405错误是H...2017-01-22
  • 401错误码代表什么 401错误解决办法

    401是HTTP状态码的一种,属于“请示错误”,表示请求可能出错,已妨碍了服务器对请求的处理。具体的401错误是指:未授权,请求要求进行身份验证。登录后,服务器可能会返回对页面...2017-01-22
  • http 402错误是什么 http 402简介

    http 402错误是什么?402错误较为少见,一般不轻易出现,下面小编就来告诉大家402错误是什么吧。 HTTP 402错误是HTTP状态码的一种,表示“要求付费”; 所求的...2017-01-22
  • 411错误是什么 411错误怎么解决

    411错误是HTTP协议状态码的一种,很多人都还不知道411错误是什么,本次一聚教程网将为大家进行解答,并且告诉大家411错误怎么解决。 411错误是什么: HTTP 411错误,(Lengt...2017-01-22
  • apache网站提示503错误解决办法

    Apache status 503 的原因大致有如下几种情况 : 1、 CPU 负载过高,服务器响应不过来,返回503 2、 系统连接数超限,超过MaxVhostClients的上限,返回503 3、 单IP连接数超限,超过M...2016-01-28
  • 404错误是什么 404错误怎么解决

    403错误是网站访问过程中,常见的错误提示。资源不可用,服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致,比如IIS或者apache设置了访问权限...2017-01-22
  • 403错误是什么 403错误怎么解决

    403错误是HTTP状态码的一种,属于“请示错误”,表示服务器拒绝请求。如果在搜索引擎尝试抓取您网站上的有效网页时显示此状态代码,那么,这可能是您的服务器或主机拒绝搜索...2017-01-22
  • 412错误是什么 412错误怎么解决

    412错误是什么?412错误怎么解决?本次一聚教程网将为大家带来详细的介绍,帮助大家全面了解412错误的意思以及解决412错误的方法。 412错误是什么: HTTP 412错误,(Precond...2017-01-22
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • 406错误是什么 406错误怎么解决

    HTTP 406错误是HTTP协议状态码的一种,表示无法使用请求的内容特性来响应请求的网页。一般是指客户端浏览器不接受所请求页面的 MIME 类型。 而MIME类型是在把输出...2017-01-22
  • 407错误是什么 407错误怎么解决

    407错误是什么?407错误怎么解决?不少站长都遇到过407错误,下面小编将告诉大家如何处理407错误。 407错误是什么: HTTP 407错误是HTTP协议状态码的一种,表示需要代...2017-01-22
  • 410错误是什么 http 410错误怎么解决

    410错误是HTTP协议状态码的一种,本次一聚教程网将为大家详细介绍HTTP 410错误是什么,以及410错误的解决办法。 410错误是什么: HTTP 410错误是HTTP协议状态码的...2017-01-22
  • HTTP 400错误是什么 HTTP 400错误怎么解决

    每当遇到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
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • PHP Curl出现403错误的解决办法

    自己用的小PHP应用,使用curl抓网页下来处理,为了穿墙方便,使用Privoxy作为代理,便于选择哪些网站使用proxy、哪些不用。但今天却遇到了奇怪的问题,访问google baidu这些网站居然都返回403错误,而访问其他的一些网站没事,如果...2014-05-31