2014-04-18 28 views
0

我正嘗試使用launchmyapp插件在我的應用程序中打開另一個應用程序。我想打開mydeals://但我無法弄清楚我做錯了什麼。我將此添加到我的config.xml。如何使用帶phonephone的launchmyapp插件?

<gap:plugin name="nl.x-services.plugins.launchmyapp"> 

<param name="URL_SCHEME" value="mydeals" /> </gap:plugin>

然後我用這:var my_window = window.open('mydeals://', '_system');打開應用。我不確定參數名稱或值是否錯誤。

+0

您是使用phonegap build還是CLI? – QuickFix

+0

我正在使用phonegap構建 – Sdog

回答

0

這是自定義applaunch插件。它的工作原理,當應用程序被安裝它directlly推出如果不是打開Play商店中

index.js上按一下按鈕來啓動應用程序代碼

AppChecker是服務。 appcheker是行動。 com.outfit7.mytalkingtomfree是您想要啓動的應用程序的包名稱。

$(".appopenclass").on("click",function() { 

     cordova.exec(function(winParam) {}, 
      function(error) { 
       utils.setAlertMsg("Plugin failed " + error); 
      }, 
      "AppChecker", 
      "appchecker", 
      ["com.outfit7.mytalkingtomfree"]); 

    }); 

項目 - >水庫 - > XML-> config.xml中

<feature name="AppChecker"> 
    <param name="android-package" value="com.appview.openapp.AppChecker" /> 
</feature> 

創建一個包,如姓名com.appview.openapp和像AppChecker.java

創建新的類名AppChecker.Java

import org.apache.cordova.CallbackContext; 
    import org.apache.cordova.CordovaPlugin; 
    import org.json.JSONArray; 
    import org.json.JSONException; 

    import android.content.Intent; 
    import android.content.pm.PackageManager; 
    import android.net.Uri; 
    import android.util.Log; 

    public class AppChecker extends CordovaPlugin { 

     @Override 
     public boolean execute(String action, JSONArray args, 
       CallbackContext callbackContext) throws JSONException { 
      if (action.equals("appchecker")) { 
       String message = args.getString(0); 

       this.appchecker(message, callbackContext); 
       return true; 
      } 
      return false; 
     } 

     private void appchecker(final String message, CallbackContext callbackContext) { 
      if (message != null && message.length() > 0) { 
       // callbackContext.success(message); 

       Log.i("test", "" + message); 

       // appInstalledOrNot(message); 

       cordova.getActivity().runOnUiThread(new Runnable() { 
        public void run() { 


         boolean installed = appInstalledOrNot(message); 
         if (installed) { 
          // This intent will help you to launch if the package is already 
          // installed 
          Intent LaunchIntent = cordova.getActivity().getPackageManager() 
            .getLaunchIntentForPackage(message); 
          cordova.getActivity().startActivity(LaunchIntent); 

          System.out.println("App already installed on your phone"); 
         } else { 
          System.out.println("App is not installed on your phone"); 

          try { 
           Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + message)); 
           i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
           cordova.getActivity().startActivity(i); 
          } catch (android.content.ActivityNotFoundException anfe) { 

          } 


         } 

        } 
       }); 



      } else { 
       callbackContext.error("Expected one non-empty string argument."); 
      } 
     } 

     private boolean appInstalledOrNot(String uri) { 
      PackageManager pm = cordova.getActivity().getPackageManager(); 
      boolean app_installed = false; 
      try { 
       pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); 
       app_installed = true; 
      } catch (PackageManager.NameNotFoundException e) { 
       app_installed = false; 
      } 
      return app_installed; 
     } 

    } 
+0

我使用phonegap構建,所以我沒有訪問java文件 – Sdog

+0

在你的系統中有你的android int,意味着你有android sdk如果是的話,試圖manaly創建和編輯所有文件我有什麼在這aswe提 –

+0

有沒有什麼辦法可以在沒有Java代碼的JavaScript中做到這一點? – Sdog

0

我想你想在這裏使用錯誤的插件。

據我所知,lanchmyapp可以幫助您註冊您的應用程序,以便可以通過調用url來調用其他應用程序。

您似乎試圖實現的是從您的應用程序啓動其他應用程序。爲此,你應該看看WebIntent plugin

+0

感謝您的回覆。現在爲了我的目的使用webintent插件,我需要使用startActivity方法嗎?我將如何去使用它?我需要打開的應用程序包稱爲com.access.access – Sdog