Intereting Posts
Проблема Progaurd «Предупреждение: игнорирование атрибута InnerClasses для анонимного внутреннего класса» Почему WifiConfiguration.BSSID всегда имеет значение null? Фрагмент фонового изображения Android Режим MODE_MULTI_PROCESS SharedPreferences менее безопасен, чем MODE_PRIVATE Можно заполнить «сетчатый» вид по столбцу, а не по строке? Почему я получаю этот совет по оптимизации Google Play Android SwipeRefreshLayout, как реализовать canChildScrollUp, если дочерний элемент не является ListView или ScrollView Отображение DatePickerDialog с двумя границами Как извлечь ramdisk.img Отправка JSON в качестве дополнительных данных в широковещательной передаче по протоколу Android через ADB неправильно отформатирована Ошибка при добавлении динамических данных Android – общие переходы элементов с завершением активности вызова () Прекратите подключение Android к определенным Wi-Fi-сетям Push Notifications с использованием Urban Airship возвращает apID как null при первом запуске Сохранение и перезагрузка ListView с использованием общих настроек

Android facebook намерен показать профиль с классом com.facebook.katana.ProfileTabHostActivity больше не работает

Возможный дубликат:
Запустить приложение facebook из другого приложения

До нескольких дней назад, чтобы показать своим пользователям другой профиль пользователя, я использовал следующее решение:

Intent intent = new Intent(Intent.ACTION_VIEW); intent.setClassName("com.facebook.katana", "com.facebook.katana.ProfileTabHostActivity"); Long uid = new Long("123456789"); intent.putExtra("extra_user_id", uid); startActivity(intent); 

Это решение используется многими пользователями stackoverflow (от просмотра всех вопросов и ответов по этому вопросу).

Последнее обновление приложения facebook (1.9.11), возможно, даже до того, как это решение устарело. Теперь для этого вы получите следующее исключение:

Java.lang.SecurityException: Отказ разрешения: начало Intent {act = android.intent.action.VIEW cmp = com.facebook.katana / .ProfileTabHostActivity (имеет дополнительные функции)} из ProcessRecord … требует null

Кто-нибудь знает, как я могу открыть приложение facebook?

благодаря

Решение, описанное в вопросе, больше не будет работать (при редактировании этого вопроса вы можете увидеть детали, почему). Новая версия приложения facebook больше не поддерживает такие намерения. См. Здесь отчет об ошибке

Новое решение – использовать механизм схемы iPhone (да, facebook решил поддержать механизм iPhone в Android вместо неявного механизма намерения Android).

Поэтому, чтобы открыть приложение facebook с профилем пользователя, вам нужно всего лишь:

 String facebookScheme = "fb://profile/" + facebookId; Intent facebookIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(facebookScheme)); startActivity(facebookIntent); 

Если вы ищете другие действия, вы можете использовать следующую страницу для всех доступных действий (вы должны ее протестировать, так как я не нашел официальную публикацию об этом в facebook)

РЕДАКТИРОВАТЬ

Эта часть вопроса дает более подробную информацию о характере проблемы и решения, но подробностей выше достаточно для решения проблемы.

С новой версией приложения facebook файл манифеста был изменен. Сегодня активность

com.facebook.katana.ProfileTabHostActivity

Описанных в манифесте следующим образом:

 <activity android:theme="@style/Theme.Facebook" android:name="com.facebook.katana.ProfileTabHostActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout" android:windowSoftInputMode="adjustPan" /> 

Поскольку для этого действия больше нет фильтра-намерения, значение по умолчанию для android: exported теперь false . В предыдущих версиях был фильтр намерений, а затем значение по умолчанию было истинным (вы можете прочитать об этом здесь ). Я хотел бы поблагодарить этот ответ за подробности об экспортируемой стоимости.

Но новая версия имеет следующую активность:

 <activity android:name="com.facebook.katana.IntentUriHandler"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="facebook" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="fb" /> </intent-filter> </activity> 

И здесь вы можете видеть, что они поддерживают схему fb и facebook .