2

Phonegap 2.9 Android アプリで次のような状況が発生しました: Web サイトからアプリを開くことができるように、カスタム インテントを宣言しました。アプリ内から、フォームで制御する外部サイトを呼び出します。外部サイトのページには、カスタム インテント URL を使用してアプリに戻るボタンがあります。

この構成は、Phonegap を使用する iOS バージョンのアプリでも機能します。

ただし、Android バージョンの場合、Android のポップアップは、カスタム URL/インテントを認識しないと言っています。ブラウザーを開いて同じ外部サイトに移動し、カスタム インテント URL で [戻る] ボタンを押すと、アプリが開始されます。

stackoverflow とインターネット全般で何時間も検索した後でも、期待どおりに機能しない理由がわかりません。

アプリと外部サイトの両方が jQuery Mobile を使用していることを知っておくとよいでしょう。を使用してアプリから外部サイトを開く

navigator.app.loadUrl('https://site.external/');

ページは HTTPS / SSL の場所にありますが、違いはありますか?

マニフェストは次のようになります。

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:windowSoftInputMode="adjustPan"
      package="com.test.app" android:versionName="1.0" android:versionCode="1" android:hardwareAccelerated="true">
    <supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:xlargeScreens="true"
        android:resizeable="true"
        android:anyDensity="true"
        />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="17"/>

    <application android:icon="@drawable/icon" android:label="@string/app_name"
        android:hardwareAccelerated="true"
        android:debuggable="true"
        android:allowBackup="false">
        <activity android:name="AppName" android:label="@string/app_name"
                android:theme="@android:style/Theme.Black.NoTitleBar"
                android:screenOrientation="portrait"
                android:launchMode="singleTop"
                android:exported="true"
                android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <data android:scheme="customurl" />
                <action android:name="android.intent.action.VIEW" />    
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
        </activity>
        <activity
            android:name="org.apache.cordova.DroidGap" 
            android:label="@string/app_name" 
            android:configChanges="orientation|keyboardHidden"> 
            <intent-filter></intent-filter> 
    </activity>
    </application>    
</manifest> 

外部ページのコードは、Google 自動検索で発生する可能性のある問題を防ぐために JavaScript を使用しています。

window.location = 'customurl://back/';

カスタム インテントでボタンを押すと、次のエラーが表示されます。

Application Error
The protocol is not supported. (customurl://back/)

では、アプリからアクセスした外部 Web サイトを取得してアプリを再度起動し、ユーザーがアプリに戻るようにするにはどうすればよいですか? 何時間も検索した後に考えられる唯一の可能性は、ユーザーが外部サイトに移動したときにアプリを閉じることです。

4

1 に答える 1

1

インテントフィルターにもホストを設定する必要があると思います:

<data android:scheme="customurl" />
<data android:host="somewebsite.com" />

それが違いを生むかどうかを確認できますか?

于 2013-09-02T14:34:24.780 に答える