共有するアプリケーションのメニューに表示されるphonegapアプリを登録する方法はありますか?
このリストに表示するには、AndroidManifest.xmlファイルを変更し、アクティビティの下に次の行を追加する必要があります。
<intent-filter>
<action Android:name="Android.intent.action.SEND" />
<category Android:name="Android.intent.category.DEFAULT" />
<data Android:mimeType="text/plain" />
</intent-filter>
これにより、アプリがリストに表示されます。これをコードで処理する方法も知りたいと思うかもしれません。別のアプリケーションがテキストを共有する場合、アプリケーションはAndroid "Intent"で開始されます。Intentsを使用できるようにするには、PhoneGapプラグインが必要です。WebIntentだと思います。これはあなたに合うかもしれません:これはコードでしょう:
// deviceready is PhoneGap's init event
document.addEventListener('deviceready', function () {
window.plugins.webintent.getExtra(WebIntent.EXTRA\_TEXT, function (url) {
// url is the value of EXTRA_TEXT
}, function() {
// There was no extra supplied.
});
});
WebIntentの詳細はこちら: http://smus.com/Android-phonegap-plugins/
注:PhoneGap Buildでこれを行うことはできないと思いますが、サポートされているプラグインしか使用できず、AndroidManifest.xmlファイルをそれほど変更することはできません。おそらく、Cordovaルートに移動して、すべてをマシン上に構築する必要があります。
編集:iOSでこれを行う方法を尋ねる人が数人います。これを行うには2つのステップがあります:
共有するファイルのURLを取得できました。 deviceready内でEXTRA_TEXTの代わりにEXTRA_STREAMを使用し、Webintent.Javaを変更し、AndroidMenifest.xmlにインテントフィルターを追加します。
これが私の主な活動の様子です。
<activity Android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" Android:label="@string/activity_name" Android:launchMode="singleTop" Android:name="MainActivity" Android:theme="@Android:style/Theme.Black.NoTitleBar" Android:windowSoftInputMode="adjustResize">
<intent-filter Android:label="@string/launcher_name">
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter Android:label="@string/app_name">
<data Android:mimeType="*/*" />
<action Android:name="Android.intent.action.SEND" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
</activity>
プラグインにEXTRA_STREAM部分のバグがあることがわかったので、次のようにjavafileを変更しました。
https://github.com/Initsogar/cordova-webintent/issues/2
また、jsファイル内で、次のような関数を呼び出す必要があります:( EXTRA_TEXTの代わりにEXTRA_STREAMを使用)
window.plugins.webintent.getExtra(window.plugins.webintent.EXTRA_STREAM, function (url) {
// url is the value of EXTRA_STREAM
alert(url);
}, function() {
// There was no extra supplied.
alert("no url");
});
そして、ファイルのURIを取得します。
@ ericpeters0n-iPhoneアプリと共有を使用する場合、このアプリのリストはどこから来たのですか?たとえば、フォトギャラリーにいて共有している場合、リストにはメッセージ、メール、Twitter、Facebook、Flickrが含まれます。これらのアプリはどのようにしてこのリストに表示されるように登録されましたか?