Whatsapp падает при попытке поделиться изображением через ShareAction Provider - PullRequest
0 голосов
/ 27 мая 2018

Итак, я сначала беру изображение из папки drawable, а затем пытаюсь поделиться им через ShareActionProvider, но Whatsapp (или любое другое приложение) продолжает падать.Он успешно отправляет текст, но не изображение.Изображение в формате PNG.

Это мое меню XML Layout:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.example.android.shareactivity.ShareActivity">

<item
    android:title="share"
    android:id="@+id/action_share"
    android:orderInCategory="2"
    app:showAsAction="always"
    app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
    />
</menu>

Это моя реализация ShareActionProvider

public class Sharing extends AppCompatActivity {

    private ShareActionProvider mShareActionProvider;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sharing);
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        //Share Action Provider
        MenuItem menuItem = menu.findItem(R.id.action_share);
        mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menuItem);

        if(mShareActionProvider!=null) {

            Intent sharingIntent = new Intent(Intent.ACTION_SEND);
            sharingIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
            sharingIntent.setType("image/*");
            sharingIntent.putExtra(Intent.EXTRA_STREAM, R.drawable.untitled);

            // sharingIntent.setType("text/*");
            // sharingIntent.putExtra(Intent.EXTRA_TEXT,"Hello World");
            mShareActionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
            mShareActionProvider.setShareIntent(sharingIntent);
        }

        return true; 
    }
}

1 Ответ

0 голосов
/ 27 мая 2018

Проблема заключается в этой строке

sharingIntent.putExtra(Intent.EXTRA_STREAM, R.drawable.untitled);

Вы не можете передать ничью, которая находится внутри вашего пакета, в любое другое приложение, вы должны будете записать это как png или jpg на диск, а затем поделитьсяпуть к этому файлу к WhatsApp.

Если ваш targetSdkVersion 24 или выше, вам придется использовать файловый провайдер, чтобы поделиться вашим файлом с любым другим приложением

...