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