7

ActionBarSherlockを介して共有アクションプロバイダーを使用しているときにプレーンテキストを共有しようとしていますが、共有するオプションは4つだけで、[すべて表示...]オプションはありません。

何故ですか?

これはどのように見えるかです:

これが私が望むものです:

4

2 に答える 2

8

そうですね、ActionBarSherlockの最初のテストに関係なく、インテントを正しく作成しているかどうかを確認します。ABSは、汎用チューザーと同じコードを使用するため、このコードを実行すると、探しているアプリが表示されるかどうかを確認します。

    Intent I= new Intent(Intent.ACTION_SEND);
    I.setType("text/plain");
    I.putExtra(android.content.Intent.EXTRA_TEXT, "My Test Text");

    startActivity(Intent.createChooser(I,"Share using ..."));

プレーンテキストを処理するそのアプリはすべて表示されます。Facebookなど、期待するものがない場合、それらのアプリは、登録したタイプ(プレーン/テキスト)のACTION_SENDインテントをサポートしていません。(Facebookはそうですが、それについては1分で詳しく説明します)

ABSには、共有アクションプロバイダーを使用するためのサンプルがありますが、テキストメッセージではなく、写真を送信しようとします(ステータスの更新)。使用する必要があるセットアップは次のようになります。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate your menu.
    getSupportMenuInflater().inflate(R.menu.share_action_provider, menu);

    // Set file with share history to the provider and set the share intent.
    MenuItem item = menu.findItem(R.id.menu_item_share_action_provider_action_bar);
    ShareActionProvider provider = (ShareActionProvider) item.getActionProvider();
                  provider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
    // Note that you can set/change the intent any time,
    // say when the user has selected an image.
    provider.setShareIntent(createShareIntent());

    return true
}

そして、これがアプリと一致し、サンプルからそれらをリストするために使用されるインテントです

private Intent createShareIntent() {
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("image/plain");
        Uri uri = Uri.fromFile(getFileStreamPath("shared.png"));
        shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
        shareIntent.putExtra(Intent.EXTRA_TITLE, "This is an android icon");
        return shareIntent;
    }

しかし、あなたはそれをしたい

private Intent createShareIntent() {
        Intent I= new Intent(Intent.ACTION_SEND);
        I.setType("text/plain");
        I.putExtra(android.content.Intent.EXTRA_SUBJECT, "TEST - Disregard");
        I.putExtra(android.content.Intent.EXTRA_TEXT, Uri.parse("http://noplace.com"));
    }

これにより、上記のチューザーで示した小さなテストスタブと同じリストがABSに表示されます。

さて、悪い知らせです。Facebookアプリは実際には機能しません。ユーザーの更新ページが表示されますが、テキストは入力されません。これはまたオン、オフ、破損ですが、昨夜試してみましたが失敗しました。これは、Facebookアプリで報告され受け入れられたバグです。キャプションを設定することはできませんが、写真を投稿することはできます。Facebookはこれを何回壊す/修正するのですか?を参照してください。

于 2012-06-15T00:56:16.417 に答える
3

ShareActionProviderActionBarSherlockはv4.1.0の時点でオーバーフローメニューをサポートしていないことを将来の読者に注意してください。おそらく、これは将来更新される可能性があります。


share_action_provider.xmlSampleListデモのファイルのコードは次のとおりです。

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/menu_item_share_action_provider_action_bar"
        android:showAsAction="always"
        android:title="@string/action_bar_share_with"
        android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider" />

    <!-- XXX: For now, ShareActionProviders must be displayed on the action bar -->
    <!--item android:id="@+id/menu_item_share_action_provider_overflow"
        android:showAsAction="never"
        android:title="@string/action_bar_share_with"
        android:actionProviderClass="com.actionbarsherlock.widget.ShareActionProvider" /-->

</menu>

この情報に対する答え-これを見つけるのにかなりの時間がかかったので、将来の読者が見つけやすくしたいと思います。

于 2012-12-11T08:24:49.937 に答える