Month: December 2010

  • Bluehost安装svn

    环境:

    Bluehost: 64位主机,可以通过 uname -a 命令查询,含有 x86_64 的就是64位系统了。
    svn: 目前最新稳定版本1.6.15。

    Bluehost用户目录下有个.local 目录,显然是为用户装自己的软件而提供的,那么以后我们要装的软件,都应该放在 $HOME/.local 目录下(来源:http://helpdesk.bluehost.com/index.php/kb/article/000530)。

    整个过程如下:

    mkdir ~/src
    cd ~/src
    
    wget http://subversion.tigris.org/downloads/subversion-1.6.15.tar.gz
    wget http://subversion.tigris.org/downloads/subversion-deps-1.6.15.tar.gz
    
    tar xvf subversion-deps-1.6.15.tar.gz
    cd subversion-1.6.15
    cd apr
    ./configure -prefix=$HOME/.local
    make; make install
    
    cd ..
    cd apr-util/
    ./configure -prefix=$HOME/.local --with-apr=$HOME./local
    make; make install
    
    cd ..
    cd neon/
    ./configure -enable-shared -prefix=$HOME/.local
    make; make install
    cd ..
    rm subversion-1.6.15 -rf
    
    
    tar xvf subversion-1.6.15.tar.gz 
    cd subversion-1.6.15
    wget http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
    tar xvf sqlite-amalgamation-3.6.13.tar.gz 
    mkdir sqlite-amalgamation
    cp sqlite-3.6.13/sqlite3.c sqlite-amalgamation
    
    ./configure --prefix=$HOME/.local --without-berkeley-db --with-zlib=/usr/ --with-ssl LDFLAGS="-L/lib64"
    make; make install 

    后面报错:

    cp .libs/mod_dav_svn.soT /usr/lib64/httpd/modules/mod_dav_svn.so
    cp: cannot create regular file `/usr/lib64/httpd/modules/mod_dav_svn.so’: Read-only file system

    没关系,我只是用来做svn client就行了。

    最后,
    vi ~/.bashrc
    export PATH=$HOME/.local/bin:$PATH

  • Android SMS 写入UIM卡

    Smart Phone跟Featrue Phone不一样,短信不会放在ICC卡上,毕竟卡的存储空间是有限的。最近一网友很纠结,老在问我如何把短信写到UIM卡上?有没有办法写个通用的程序?这个主要决定于手机厂家没有实现相应的接口函数。

    Android 提供把短信写入ICC卡的接口为:

    frameworks/base/telephony/java/android/telephony/SmsManager.java copyMessageToIcc

    如果是CDMA的话,调用过程如下:
    frameworks/base/telephony/java/com/android/internal/telephony/cdma/RuimSmsInterfaceManager.java 里的函数 copyMessageToIccEf 调用

    frameworks/base/telephony/java/com/android/internal/telephony/RIL.java 里的 writeSmsToRuim ,这个要发出

    一个 RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM 请求号,RILD接收请求,传给 libril,再给 reference-ril,这样,只要在 reference-ril 里的
    onRequest (int request, void *data, size_t datalen, RIL_Token t) 处理这个 RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM 请求号即可,根据不同的模组,填入相应的AT处理函数。

    像XT800,i909双网手机,在长按单条短信时,都弹出复制SMS至UIM卡选项。通过反编译Mms.apk包,可以看出他们都自己实现自己的接口,而没有实现Android默认的Api。xt800提供了一个content://sms/icc provider,大致是这样实现的:

    String sSc = null;
    Uri uSim = null;
    ContentValues values = new ContentValues();
    values.put("type", Integer.valueOf(mBody.mBoxId));
    values.put("address", mBody.mAddress);
    values.put("body", mBody);
    values.put("data", Long.valueOf(mBody.mDateTime));
    values.put("service_center", sSc);
    
    if (MessageUtils.getDefaultMode().equals("CDMA")) {
        Log.("ComposeMessageActivity", "start copy msg to UIM");
        sSc = mContentResolver.insert(Uri.parse("content://sms/icc", values));
    } else if (MessageUtils.getSecondaryMode().equals("CDMA")) {
        sSc = mContentResolver.insert(Uri.parse("content://sms/icc2", values));
    }
    
    Log.("ComposeMessageActivity", "finish copy msg to UIM");

    i909的,自己实现
    private void copyMessageToUIM(MessageItem msgItem), 调用SmsManager.MakeSubmitPDU, 也是自己的实现的。