2011-09-30 36 views
0

我是phonegap和我的項目的新手,我需要在HTML頁面中調用 javascript中的活動,這有可能嗎?可以從Android的JavascriptInterface調用Activity嗎?




    public void capturePhoto() { 
      JavascriptInterface.this.runOnUiThread(new Runnable() { 
       @Override 
       public void run() {    
        try{ 
         Intent i = new Intent(JavascriptInterface.this, GetPicture.class);     
         startActivity(i); 
        }catch(Exception e){ 
         Toast.makeText(mContext, e.getMessage(), Toast.LENGTH_SHORT).show(); 
        } 

       } 
      }); 
     } 

 

回答

0

我不是Android或使用JavaScript界面​​,熟悉網絡編程的,所以我不知道是否有可能推出與任意意圖。

但是,我認爲你有一些方法來簡單地打開一個鏈接。如果您發現無法啓動活動,您仍然可以使用自定義URI方案來實現某些功能。

基本上,這個想法是,您要爲要啓動的活動添加一個意圖過濾器,該活動爲該活動註冊一個自定義URI方案。然後,當您嘗試使用該方案打開鏈接時,Android會將其映射到您的活動的android.intent.action.VIEW目的。

例如,如果你在爲要啓動該活動的意圖過濾以下:

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:scheme="penroser"/> 
</intent-filter> 

然後,您可以啓動一個URL像penroser:BLAH,它實際上應該發動你的活動。

但是,上面假設您可以向要啓動的活動添加意圖過濾器。但是,如果您想啓動一個更普遍的意圖,或者啓動一個您無法控制的活動,它會讓事情變得更加複雜。

在這種情況下,您可以定義一個「彈簧板」活動,其目的是接收自定義URI意圖,然後使用您定義的某種格式對某些意圖信息進行解碼,然後基於該意圖啓動意圖解碼的信息。例如,假設您註冊了自定義URI模式launchactivity:,然後您可以啓動一個鏈接,如:launchactivity://activity?component=com.example.MyActivity,然後在spring-board Activity中擁有一些解析邏輯,從URI中解析出組件名稱並啓動該組件的意圖。

根據你需要什麼,你應該能夠通過你的launchactivity: URL

+0

我使用ASP.NET MVC創建的網站需要的任何意圖的數據,我想傳遞參數給PhoneGap的程序,我使用方法:shouldoverrideurlloading加載Phonegap的活動。我使用link:camera:param1 = value1 && param2 = value2來傳遞參數。 –

+0

在那個評論裏有什麼問題嗎? :) – JesusFreke

相關問題