Monthly Archives: 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, 也是自己的实现的。