Галерея Android 2.1 несовместима с версией Cupcake, и что теперь? - PullRequest
2 голосов
/ 26 апреля 2010

Я не знаю почему, но в Eclair приложение галереи по умолчанию (не причудливое) изменило свой статус по сравнению с версией Cupcake, и оно сломало одно из моих коммерческих приложений: - (

Во-первых, при длительном нажатии на галерею и выборе «Diashow» она не публикует намерение, которое может быть обнаружено любым приложением, которое реализует фильтр намерений. Вместо этого он будет напрямую вызывать com.android.gallery/com.android.camera.ViewImage с дополнительными функциями.

Вопрос: все еще возможно перехватить это намерение и позволить пользователю выбрать мое приложение для проведения Диа-шоу?

Во-вторых, дополнительные функции для намерения VIEW испорчены (во всяком случае, в моей сборке 2.1): вместо предоставления BucketId изображения в параметре запроса Intent. Но в 2.1 BucketId перемещен в дополнительные функции Intent. Кроме; он не пропускает BUCKET_ID, а вместо него локализуется BUCKET_DISPLAY_NAME: - /

Вопрос: как я могу получить уникальный BUCKET_ID из намерения, чтобы мне не приходилось работать с потенциально неуникальным BUCKET_DISPLAY_NAME?

Есть ли кто-нибудь, кто придумал рабочее решение этих проблем?

Я думал, что вся идея Android Intents заключается в возможности интегрировать ваши приложения с базовой средой Android, но моя сборка 2.1 доказывает, что эта идея все еще живет на земле теории: - (

Ответы [ 2 ]

1 голос
/ 26 апреля 2010

Во-первых, при длительном нажатии на галерею и выбрав «Diashow», он не опубликовать Намерение, которое будет подобрано любое приложение, которое реализует Намеренный фильтр больше.

То, что Intent, вероятно, не было частью SDK, то есть вы не должны были полагаться на него в первую очередь. Для приложения «Галерея», являющегося частью SDK, нет Intents, кроме случаев, когда Галерея поддерживает обычные Intents (например, GET_CONTENT, PICK).

Вопрос: все еще возможно перехватить это намерение и позволить пользователь, чтобы выбрать мое приложение, чтобы сделать диашоу?

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

Вопрос: как я могу получить уникальный BUCKET_ID из намерения, так что мне не нужно работать с потенциально неуникальный BUCKET_DISPLAY_NAME

Это Intent не задокументировано. Пожалуйста, не пытайтесь использовать его. Ваше приложение будет работать на некоторых устройствах Android, которые не поставляются со стандартным приложением «Галерея». Ваше приложение сломается в будущих версиях Android, как вы уже испытали. Пожалуйста, придерживайтесь Intents, которые были задокументированы автором приложения.

Я думал, что вся идея Android Намерения должны были быть в состоянии интегрировать ваши приложения с базой Среда Android

Только там, где эти Intents были задокументированы и поддерживаются авторами рассматриваемой заявки. Если вы думали, что можете просто взять случайный Intents, который вы нашли в исходном коде или в LogCat или что-то еще, и использовать их, вы ошиблись.

0 голосов
/ 26 апреля 2010

Вопрос: все еще возможно перехватить это намерение и позволить пользователь, чтобы выбрать мое приложение, чтобы сделать диашоу?

Ответьте на свой первый вопрос .... Но при этом вам, возможно, придется пересобрать приложение и затем обновить ...

Чтобы ваша цель состояла только в том, чтобы получить назначенное вами намерение, добавьте к нему дополнительный флаг или создайте свое собственное действие, а затем выполните намерение. Получив действие, установите фильтр намерений в файле манифеста приложения, упоминая о ваших пользовательских действиях. Вы сделали здесь. Только действие, назначенное вашим фильтром намерений, будет получать ваше намерение.

Вопрос: как я могу получить уникальный BUCKET_ID из намерения, так что мне не нужно работать с потенциально неуникальный BUCKET_DISPLAY_NAME

Не пытайтесь сделать это, так как у вас могут возникнуть проблемы, так как это может сломать ваше приложение в предыдущих версиях Android.

...