2015年3月3日 星期二

Android Phonegap App中Native與Javascript溝通的範例

一、首先建立一個類別:

public class MyJavaScript
{
    private WebView mAppView;
    private DroidGap mGap;
    
    public MyJavaScript (DroidGap gap, WebView view)
    {
        mAppView = view;
        mGap = gap;
    }
    
    @JavascriptInterface //文件說4.2之後須增加這一行,但是實際測試不加亦沒問題。
    public String test(String name)
    {
        return "Hello, " + name;

    }
}

二、讓WebView增加MyJavaScript:

請注意下面的程式必須在super.loadUrl("file:///android_asset/www/index.htm");之後,因為appView在這個之後才存在實例,否則appView為null就會導致下面的程式發生例外。

try
{
        appView.addJavascriptInterface(
                       new MyJavaScript(thisthis.appView),"MyAndroidFunctions");
}
catch(Exception e)
{
        Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
}

三、在javascript中測試:

alert(MyAndroidFunctions.test("World!"));

如何使用AD自動派送更新

一、建立分享資料夾:

1. 建立一個分享資料夾,並把權限設定為所有Domain users可以存取。

2. 將要派送更新的檔案放在裡面。

3. 撰寫派送批次檔,例如:

    copy /y "\\10.1.1.1\sw\mySoftware.exe" "c:\Software"
 
上述指令的簡略說明如下:
    \\10.1.1.1\sw:分享資料夾的網路位置。
    mySoftware.exe:將要派送更新的檔案。
    c:\Software:使用者端要被更新的檔案的位置。

4. 將這個檔案存成副檔名為bat的檔案,例如:autoexec.bat。


二、使用AutoIT來包裝RUNAS行為:

1. 下載AutoIT完整版

2. 依照安裝檔的指示安裝下載好的autoit-v3-setup.exe。

3. 使用文字編輯器編寫Script:
 
   RunAs("帳號", "Domain", "密碼", 1, "執行的批次檔")

檔案中只需要上述一行內容,其中帳號密碼須為可以在使用者端電腦上複製檔案的權限,Domain為這個帳號所屬的Domain,執行的批次檔須包含所在位置,且所在位置最好使用網路位址,也就是在第一項建立的分享資料夾的位置。

以下為一個範例:

   RunAs("administrator", "test.com", "pa55w0rd", 1, "\\10.1.1.1\sw\autoexec.bat")

4. 將這個檔案存成副檔名為au3的檔案,例如:update.au3。

5. 在存好的檔案上按右鍵,選擇Compile Script,便會產生一個執行檔,如下圖:

6. 最後將產生的執行檔放到第一項建立的分享資料夾的位置。


三、在AD上面建立使用者的登入原則:

1. 打開伺服器管理員,參考下圖來建立GPO並連結到我們要做用到的網域:


2. 替這個GPO取一個名稱:


3. 在我們剛才建立的GPO上面按下滑鼠右鍵並選擇編輯:


4. 在群組原則管理編輯器的視窗中,參考下圖設定登入的指令碼:


5. 按下新增按鈕:


6. 可以使用瀏覽或是直接打入指令:


7. 我們使用瀏覽選擇在第二項建立的執行檔,注意須使用網路位置



8. 按下確定應該會是如下畫面,確定你新增的指令碼有在列表中並且正確:


9. 打開命令提示視窗並輸入:gpupdate /force 讓我們剛剛設定的原則立即生效。



四、到這邊應該全部大功告成,使用者登入Domain就應該會執行我們做的設定來更新檔案,如果沒有,請仔細檢查你的「權限設定」。