Обмен текстом с изображением в instagram с использованием намерения Android

Я знаю, что этот вопрос уже задавался несколько раз, я пытаюсь добавить подпись к изображению, опубликованному в Instagram, используя намерение отправки.

Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");
shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shareIntent.putExtra(Intent.EXTRA_STREAM,uri);
shareIntent.putExtra(Intent.EXTRA_TEXT,"YOUR TEXT TO SHARE IN INSTAGRAM");
shareIntent.setPackage("com.instagram.android");
return shareIntent;

Кому-то когда-нибудь удавалось заставить его работать?

Он не поддерживается или поддержка отменена?


person ammcom    schedule 17.09.2015    source источник
comment
Протокол ACTION_SEND задокументирован для поддержки либо EXTRA_TEXT, или EXTRA_STREAM на любом заданном Intent. Хотя некоторые приложения могут поддерживать и то, и другое, это не обязательно для любого приложения.   -  person CommonsWare    schedule 18.09.2015
comment
Кто-то сказал, что Instagram поддерживает дополнительный текст, а я не могу заставить его работать, поэтому я спрашиваю конкретно о приложении Instagram.   -  person ammcom    schedule 18.09.2015


Ответы (5)


Было официальное заявление от Instagram (середина 2015 г. ) с объявлением о том, что предварительно заполненные подписи больше не будут приниматься в приложениях для iOS и Android:

С сегодняшнего дня хуки iOS и намерения Android перестанут принимать субтитры, передаваемые сторонними приложениями. Это некритическое изменение: существующие мобильные приложения, в которых используются предварительно заполненные подписи, по-прежнему смогут использовать этот поток для обмена мультимедиа через приложения Instagram, но теперь Instagram будет игнорировать текст подписи. Чтобы создать подпись к фотографии или видео, опубликованным сторонним приложением, пользователям придется вводить подпись вручную, как они уже делают при обмене контентом с помощью собственных приложений Instagram.

Глядя на документацию Instagram для Android, мы действительно видим, что там нет упоминание о предоставлении обычной дополнительной строки Intent.EXTRA_TEXT в намерении, как это принято для других приложений. Их образец ограничен только предоставлением Uri:

// Add the URI to the Intent.
share.putExtra(Intent.EXTRA_STREAM, uri);

// Broadcast the Intent.
startActivity(Intent.createChooser(share, "Share to"));

К сожалению, это просто невозможно, и Facebook принимает это решение по своему усмотрению.

person Paul Lammertsma    schedule 09.03.2016

Пока Инстаграм не решит проблему, я копирую текст в буфер обмена и даю пользователю команду вставить его.

person Ricardo Schaffer    schedule 15.07.2016
comment
Это хороший подход. Я подумаю об этом. - person Bruno Canongia; 13.02.2017

Я с той же проблемой. Я думаю, что в настоящее время это невозможно.

В https://instagram.com/developer/mobile-sharing/android-intents/ говорить только о Intent.EXTRA_STREAM, поэтому я полагаю, что это единственное доступное.

Вот мой код:

    Intent instagramIntent = new Intent(Intent.ACTION_SEND);
    instagramIntent.setType("image/*");
    File media = new File(mediaPath);
    Uri uri = Uri.fromFile(media);
    instagramIntent.putExtra(Intent.EXTRA_STREAM, uri);
    instagramIntent.setPackage("com.instagram.android");

    PackageManager packManager = getPackageManager();
    List<ResolveInfo> resolvedInfoList = packManager.queryIntentActivities(instagramIntent,  PackageManager.MATCH_DEFAULT_ONLY);

    boolean resolved = false;
    for(ResolveInfo resolveInfo: resolvedInfoList){
        if(resolveInfo.activityInfo.packageName.startsWith("com.instagram.android")){
            instagramIntent.setClassName(
                    resolveInfo.activityInfo.packageName,
                    resolveInfo.activityInfo.name );
            resolved = true;
            break;
        }
    }
    if(resolved){
        startActivity(instagramIntent);
    }else{
        Toast.makeText(PromocionarMain.this, "Instagram App is not installed", Toast.LENGTH_LONG).show();
    } 
person Martín Huergo    schedule 23.09.2015
comment
Пожалуйста, НЕ копируйте и не вставляйте старые сообщения - person ammcom; 24.09.2015

Instagram перестал принимать предварительно заполненные подписи, чтобы повысить качество контента в системе. Смотрите этот пост.

http://developers.instagram.com/post/125972775561/removing-pre-filled-captions-from-mobile-sharing

person siliconeagle    schedule 07.12.2015
comment
Пожалуйста, не публикуйте одинаковые ответы на несколько вопросов. Опубликуйте один хороший ответ, затем проголосуйте/отметьте, чтобы закрыть другие вопросы как дубликаты. Если вопрос не повторяется, адаптируйте свои ответы к вопросу. - person josliber♦; 07.12.2015

person    schedule
comment
У меня было подобное решение, и оно перестало работать. Намерение не найдено сейчас, хотя у меня установлено приложение Instagram. - person Makalele; 02.12.2020