WebViewプロジェクトのPhone Gapプラグインの使用詳細はstartActivityForResoultです.
2961 ワード
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が対応するプラグインとどのように結合されているか、および上記の問題の原因が見られます.
メインプログラム(GapDroid継承)でstartActivityForResoultを使用するには、プラグインをバインディングする方法しかないようです.分析過程はかなり退屈です.解決方法を列挙して、より良い処理の同僚がいることを望んで、返事を与えます.
メインプログラムで空のプラグインを定義し、startActivityForResoultを必要とする場合は、この空のプラグインを第一パラメータとして使用します.また、空のプラグインでオンActivityResoultメソッドを上書きします.(直接にメインプログラムにアクセスし、呼び出しできるコードです.)
これは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);