Подтвердить что ты не робот

Instagram от Android открыт для определенного пользователя и добавляет заголовок для загруженного изображения

Instagram для Android очень ограничен, из того, что я видел до сих пор. Мой сценарий прост: разрешите пользователю редактировать картинку, а когда он нажимает кнопку "Отправить":

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");

Затем с queryIntentActivities() я ищу, чтобы установить, установлен ли Instagram. Если это, я отправляю путь к моему изображению для загрузки:

 share.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///" + path to myfile.png"));
 share.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);
 share.putExtra(Intent.EXTRA_SUBJECT, "Sample subject");
 share.putExtra(Intent.EXTRA_TEXT, "Sample text");
 share.putExtra(Intent.EXTRA_TITLE, "Sample title");

Результат: изображение загружается с помощью приложения Instagram (конечно, если я вошел в систему), но я не могу добавить к нему надпись. Ни один из putExtra не имеет никакого эффекта. Итак, есть ли способ добавить заголовок в качестве параметра намерения?

И другой вопрос: можно ли открыть приложение Instagram с определенным именем пользователя, заполненным?

4b9b3361

Ответ 1

Похоже, что приложение Android Instagram игнорирует EXTRA_TEXT, EXTRA_SUBJECT и EXTRA_TITLE, поэтому кажется, что добавление заголовка при загрузке изображения невозможно. Кстати, вы можете попробовать разные подходы, чтобы проверить, не игнорирует ли эти дополнения в каждом случае:

ВАРИАНТ № 1: изменение типа MIME.

Вы устанавливаете тип MIME в "image/jpeg". Попробуйте использовать "image/" или "/*", чтобы проверить, не игнорирует ли их приложение эти дополнительные функции.

share.setType("image/*");

или

share.setType("*/*");

ВАРИАНТ № 2:

Когда вы отправляете несколько типов MIME (изображение и текст), возможно, их приложение ожидает ACTION_SEND_MULTIPLE вместо ACTION_SEND.

Intent share = new Intent(Intent.ACTION_SEND_MULTIPLE);

ВАРИАНТ № 3: используйте функцию MediaStore.Images.Media.insertImage(ContentResolver cr, String imagePath, String name, String description):

Intent share = new Intent(Intent.ACTION_SEND);
share.putExtra(Intent.EXTRA_STREAM, Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), "file:///" + path to myfile.png", "Sample title", "Sample description")));
share.setType("image/jpeg");
share.setClassName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);

ВАРИАНТ № 4: опубликуйте свою проблему в своем форуме форум разработчиков, хотя есть похожие вопросы, которые остаются нерешенными:

И не забудьте вернуться и сказать нам свой ответ!

Ответ 2

Похоже, Instagram обновил свое приложение, чтобы принять EXTRA_TEXT, чтобы добавить подпись. Если у пользователя есть обновленная версия Instagram (1 июля 2014 года или более поздняя версия), вы можете отправить изображение и добавить заголовок со следующим кодом:

Intent instagram = new Intent(android.content.Intent.ACTION_SEND);
instagram.setType("image/*");
instagram.putExtra(Intent.EXTRA_STREAM, [URI of photo]);
instagram.putExtra(Intent.EXTRA_TEXT, [Text of caption]);
instagram.setPackage(instagramPackageName);
startActivity(instagram);

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

Этот код предполагает, что вы уже прошли через поток auth.