Ответ 1
Дублируйте эту статью со ссылкой на отчет об ошибке в Facebook, где Facebook подтверждает поведение и утверждает, что они, вероятно, не исправят его.
Что касается того, как другие приложения получают это поведение, у меня есть предположение.
Если у вас есть веб-сайт, на котором вы можете добавить фиктивную страницу, вы можете сделать следующее:
<html>
<head>
<script type="text/javascript">
window.location.replace('https://play.google.com/store/apps/details?id=com.example.client');
</script>
</head>
<body></body>
</html>
Затем используйте setContentUrl(Uri.parse("https://example.com/android")
для вашего ShareDialog
, где url открывает страницу, которая обслуживает HTML выше.
Это автоматически отправит пользователей на страницу Google Play Store, когда они откроют эту страницу. Кнопка "Назад" должна работать, как если бы они сразу же попали на страницу Google Play Store.
Я попробовал просто использовать перенаправление HTTP вместо фактического размещения страницы, но это не сработало.
EDIT: Вы можете включить AppLinks метатеги в заголовке страницы, чтобы пропустить перенаправление на Android устройства.
<html>
<head><title>App Link</title>
<meta property="fb:app_id" content="XXXXXXXXXXXXXXX"/>
<meta property="al:ios:url" content="example://test"/>
<meta property="al:ios:app_name" content="Example App"/>
<meta property="al:ios:app_store_id" content="XXXXXXXXX"/>
<meta property="al:android:package" content="com.example.client"/>
<meta property="al:android:app_name" content="Example App"/>
<meta property="al:android:url" content="example://test"/>
<meta property="al:web:should_fallback" content="false"/>
<meta http-equiv="refresh" content="0;url=http://play.google.com/store/apps/details?id=com.example.client"/>
</head>
<body>Redirecting...</body>
</html>
В этом показано, как обрабатывать ссылку в вашем приложении.
<activity
android:name="com.example.client.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<data android:scheme="example"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
Если приложение не установлено на устройстве, вы отправляетесь в Google Play Store (хотя и с помощью очень уродливого всплывающего окна, которое не происходит в обычном потоке ShareDialog, когда ссылка на Play Store используется напрямую).
Кроме того, Facebook будет создавать и размещать страницу для вас, если вы этого хотите. Пример HTML выше - с одной из их размещенных страниц (обратите внимание на различную реализацию перенаправления).