2015年4月1日 星期三

[android] how to check "unknown source" by default in settings/security ?

file: <aosp>/device/nvidia/macallan/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml

<bool name="def_bluetooth_on">false</bool>
<bool name="def_wifi_display_on">false</bool>
<bool name="def_install_non_market_apps">true</bool>
<bool name="def_package_verifier_enable">true</bool>

[android] how to update placement of home screen in launcher ?

file: <aosp>/packages/apps/Launcher2/res/xml-sw720dp/default_workspace.xml

<favorite
        launcher:packageName="com.android.music"
        launcher:className="com.android.music.MusicBrowserActivity"
        launcher:screen="2"
        launcher:x="1"
        launcher:y="1" />

[android] how to change default bookmark preloads in browser settings ?

file: <aosp>/packages/apps/Browser/src/com/android/browser/provider/BrowserProvider2.java

private void addDefaultBookmarks(SQLiteDatabase db, long parentId) {
....
    //bookmarks = res.getTextArray(R.array.bookmarks);
    //preloads = res.obtainTypedArray(R.array.bookmark_preloads);
    bookmarks = res.getTextArray(R.array.bookmarks_tt_china);
    preloads = res.obtainTypedArray(R.array.bookmark_preloads_tt_china);
}

[android] how to change default homepage in browser settings ?

file : <aosp>/packages/apps/Browser/res/values/strings.xml
<!-- The default homepage. -->
<string name="homepage_base" translatable="false">
        http://www.google.com
</string>

2013年12月3日 星期二

dart 語言心得

Comments:
單行  //
多行  /*...*/
document comments
    ///
    /**
    內容中含有 [xxx] , xxx參考到 class/method/field/top-level variable/function/parameter


Two runtime modes:
  production - faster, deploy (ignore assert statements and static type checking)
  checked - helpful development


Variable default value
  Uninitialized variables have an initial value of null.
  int linecnt;  <<-- linecnt is null by default, not 0


Optional type system
  it is optional to declare the type of variables/functions/parameters/fields.
  if you declare it, it is useful to type checking on checked runtime mode


Final and Const
  final variable is initialized the first time it's used, it can set only once.
    (Lazy initialization of final variables helps apps start up faster)
  const variables is compile-time constants.
    const pi=3.14159;
    const round=2*pi;


Build-in Types
  numbers: int (任何長度的整數) / double(凡含小數點的數字) / num
  strings: String
  booleans: bool (true/false)
  lists: List<T> / Collection
  maps: Map

String (immutable sequences of UTF-16 code units)
  quote / double-quote / triple-quote for multi-lines string
  raw string ==> r"In a raw string, even \n isn't special."
  字串比較用 == (是比較字串內容)

Boolean
   In Dart, only the value true is treated as true, all other values are treated as false.
   check string if empty ==> str.isEmpty()
   check int if NaN  ==> iVar.isNaN()

List (zero-based indexing)
   In Dart, array is List object.
   var list = [1,2,3,4];

Map
    用宣告方式產生
    var abc = {
        'test1' : [123,456,789],
        'test2' : [666,777]
    };
    用 constructor產生
    var def = new Map();
    var nnn = new Map<int, String>();



Function
  if no return value is specified, the statement return null.

Optional parameters (can be either positional or named, but not both)
  default values must be compile-time constants such as literals. If no default value, the value is null.
  checking caller passing value for an optional parameter: ?param
   if (?device) { return true if the caller specified the parameter
      //....
   }

  Named parameters use {param1, param2,...} to declare
    enableFlags( {bool bold, bool hidden : false} ) {
      // ...
    }

  In caller side, named parameters using paramName : value
    enableFlags(bold: true, hidden: false);

  Positional parameters use [] to declare it
    String say( String from, String msg, [String device="carrier", String mood] ) {
    }



Type Test Operators
  as Typecast
  is  True if the object has the specified type
  is! False if the object has the specified type




2013年10月24日 星期四

[android build] build/core/base_rules.mk MODULE.TARGET.xxx ... already defined by ...

在 build android 的過程中出現 ... build/core/base_rules.mk MODULE.TARGET.xxx ... already defined by ... ,那麼應該是 某個 Android.mk 中的 module name 重複了,因此解決的方法是
1. 將 module name 改名,避免同名。
2. 將 Android.mk 的前後加入 ifeq ($(ENV_VAR), XXYY) ... endif ,讓符合某個 環境變數才將 module 加入

2013年6月10日 星期一

步驟:如何root HTC Aria和 WildfireS手機 ?

目前按照下列步驟已成功將自己的WildfireS和女兒的Aria手機成功地 root 了。

行前必要動作: 備份
在執行下列動作之前,請務必要事先做好備份工作,以免後悔莫及。
另外,htc sync 能夠正常透過 usb cable 連接到你的手機。(最主要是 adb 可以連結)

1. unlock bootloader (再次提醒,在進行此步驟之前請備份)
    去網站 www.htcdev.com 申請 unlock bootloader,請依照網站說明步驟進行(非常清楚容易)。    通常進行到最後 燒錄 unlock bootloader  bin file 之後,你的手機會被 clean boot,所以才再次提醒你務必要備份你的重要資料(外部 sdcard中的資料是不會被清除的)。

2. 取得 root 升級包 (不是整個 image 包,而是單純的內含 su 而已的 root 包)。
    去網站 apk.tw 搜尋取得上述的 "root升級包 for HTC"
  http://apk.tw/forum.php?mod=viewthread&tid=58559&fromuid=249407
  http://apk.tw/thread-240301-1-1.html      主要是參考這一篇

  安裝 "刷機精靈" ,官網是 http://www.shuame.com
  使用 "一鍵刷機" 功能,將取得的 root 包燒錄進去。

  成功後,你的手機已經成功安裝 root 相關程式,可以透過 EF FileExplorer 去檢查看看。

3. 安裝 Link2SD,來擴充手機裡的 internal space (安裝或升級 APK 所需的空間)
  重點是 透過 外部 sdcard 來擴充,首先將 sdcard 分割成兩個 partitions,其中一個必須是 ext2/3/4等 type(通常選擇 ext3, size 約 1~2G)。
  另外,需適當地設定 Link2SD 來讓系統使用延伸的 ext3 partition空間。

4. 做完上述的動作,基本上已經完成 root 和 擴充 APK 空間的破解了。
    雖然上述的參考都是 Wildfire S,但是同樣的步驟應用於 Aria (A6380)也同樣可行。