WebViewプロジェクトのPhone Gapプラグインの使用詳細はstartActivityForResoultです.


Androidを作ったことがあるので、startActivityForResoultという方法の呼び出しは、よく知らないはずです.
これはjavascriptのモードの対話モードのようで、ポップアップの新しいページの中で、ユーザーに操作をさせて、結果を呼び出したページに戻します.もちろんandroidでの実現には違いがあります.
 
実現プロジェクトでは、Phone Gapプラグインを使って、webviewアプリケーションの開発を行います.
この方法は、直接にstartActivityForResoult(intent,request code)を使用すると、Phone Gapエラーが発生します.Phone Gap Exception:Call startActivityForResoult(Command,Intent)instead.
 
ソースを見てください.建設はstartActivityForResoultを使って呼び出します.こう書くと、モードダイアログの目的に達しません.
ソースの中にはもう一つのPhone Gapの拡張方法があります.public void startActivityForResoult(Plugin command、Intent intent、int request Code)は最初はそんなに多くなくて、直接これを調整します.
 
テストは正常で、呼び出しもコールも正常です.これからは大丈夫です
 
プロジェクトがしばらく実行された後、以前プラグインからスタートしたstartActivityForResoultは正常に戻りませんでした.つまりプラグインで定義されているonActivityResoultは全部調整されていません.追跡してみたら、すべてのフィードバックはメインプログラムのonActivityによってブロックされました.
 
以下のコードを分析すると、Phone Gapプラグインにおいて、onActivityResoultが対応するプラグインとどのように結合されているか、および上記の問題の原因が見られます.
  public void startActivityForResult(Plugin command, Intent intent, int requestCode) {
    	this.activityResultCallback = command;
    	this.activityResultKeepRunning = this.keepRunning;
    	
    	// If multitasking turned on, then disable it for activities that return results
    	if (command != null) {
    		this.keepRunning = false;
    	}
    	
    	// Start activity
    	super.startActivityForResult(intent, requestCode);
    }
  
  protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    	 super.onActivityResult(requestCode, resultCode, intent);
    	 Plugin callback = this.activityResultCallback;
    	 if (callback != null) {
    		 callback.onActivityResult(requestCode, resultCode, intent);
    	 }        
  }
   
  
 メインプログラム(GapDroid継承)でstartActivityForResoultを使用するには、プラグインをバインディングする方法しかないようです.分析過程はかなり退屈です.解決方法を列挙して、より良い処理の同僚がいることを望んで、返事を与えます.
メインプログラムで空のプラグインを定義し、startActivityForResoultを必要とする場合は、この空のプラグインを第一パラメータとして使用します.また、空のプラグインでオンActivityResoultメソッドを上書きします.(直接にメインプログラムにアクセスし、呼び出しできるコードです.)
	/**
	 *          ,     DroidGap        
	 */
	class EmptyPlugin extends Plugin {

		@Override
		public PluginResult execute(String action, JSONArray args,
				String callbackId) {
			// TODO Auto-generated method stub
			return null;
		}

		@Override
		public void onActivityResult(int requestCode, int resultCode,
				Intent intent) {
			// TODO Auto-generated method stub
			if (resultCode == RESULT_OK) {
				if (requestCode == SETTING_CODE) {
........................................       ............
								}
			}
		}

	}
private final EmptyPlugin ep = new EmptyPlugin();
startActivityForResult(ep,intent,111111);