1

私はこのコードが意図的にブラウザを起動することを発見しました:

Intent intent = new Intent (Intent.ACTION_VIEW, uri);
intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
intent.setDataAndType(uri, "text/html");
startActivity(intent);

できます。

しかし、私はAndroidSDKを使用していません。Phonegapを使用してアプリケーションを作成しています。だから私はこのインテントを起動する方法を探しています。このプラグインを見つけました: https ://github.com/borismus/phonegap-plugins/tree/master/Android/WebIntent/

ただし、「setClassName」、「setDataAndType」は許可されていません。

何か案は ?

4

2 に答える 2

2

CordovaWebViewClientをチェックすると、Cordovaによってすぐに処理されるいくつかのURIがあります。

プラグインで遊びたくない場合は、プラグインをオーバーライドして、さまざまなカスタムタイプのURIのサポートを追加できます。これにより、URIで指定されたパラメーターを使用して、選択したアプリケーションをランチできます。

public class CustomWebViewClient extends
        org.apache.cordova.CordovaWebViewClient {

    public CustomWebViewClient(DroidGap ctx) {
        super(ctx);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        //Check if provided uri is interesting for us
        if (url.startsWith("customUri://")) {
            //Get uri params, create intent and start the activity
            return true;
        }

        return super.shouldOverrideUrlLoading(view, url);
    }
}

上記のクラスは、Androidプロジェクトのメインアクティビティ(DroidGapを拡張する)で使用する必要があります。

@Override
public void init() {
    WebView webView = new WebView(this);
    CustomWebViewClient webClient = new CustomWebViewClient(this);
    CordovaChromeClient chromeClient = new CordovaChromeClient(this);
    super.init(webView, webClient, chromeClient);
}

あなたが言及したプラグインは、指定されたURIに基づいてインテントをランチすることを可能にします。したがって、たとえば、http://で始まるURIを提供すると、AndroidはそれをWebリソースとして認識し、使用可能なブラウザを起動しようとします。したがって、ブラウザを起動したいだけなら、それで十分です。

于 2012-05-21T12:43:56.717 に答える
1

AndroidブラウザにURLをロードするだけの場合は、ChildBrowserプラグインを使用する必要があります。

https://github.com/phonegap/phonegap-plugins/tree/master/Android/ChildBrowser

インテントを開始したい場合は、Android PhoneGapコードがあらゆる種類のインテントを起動して作業を完了するので、お知らせください。

于 2012-05-21T13:31:31.373 に答える