Откройте страницу в приложении Twitter из другого приложения-Android
Я искал какой-то способ запустить приложение Twitter и открыть указанную страницу из моего приложения, без webview. Я нашел решение для Facebook здесь: открытие приложения facebook на указанной странице профиля
Мне нужно что-то подобное.
EDIT Я только что нашел решение:
try {
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse("twitter://user?screen_name=[user_name]"));
startActivity(intent);
} catch (Exception e) {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("https://twitter.com/#!/[user_name]")));
}
5 ответов:
это сработало для меня:
twitter://user?user_id=id_num
чтобы узнать идентификатор:http://www.idfromuser.com/
на основе fg.radigales ответ, это то, что я использовал, чтобы запустить приложение, если это возможно, но вернуться к браузеру в противном случае:
Intent intent = null; try { // get the Twitter app if possible this.getPackageManager().getPackageInfo("com.twitter.android", 0); intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USERID")); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } catch (Exception e) { // no Twitter app, revert to browser intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/PROFILENAME")); } this.startActivity(intent);
обновление
добавил
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
чтобы исправить проблему, когда twitter открывался внутри моего приложения, а не как новое действие.
мой ответ строится поверх широко принятых ответов от fg.радигалес и Гарри. Если у пользователя установлен, но отключен Twitter (например, с помощью карантина приложений), этот метод не будет работать. Цель для приложения Twitter будет выбран, но он не сможет обработать его, как он отключен.
вместо:
getPackageManager().getPackageInfo("com.twitter.android", 0); intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=2343965036"));
вы можете использовать следующее, чтобы решить, что делать:
PackageInfo info = getPackageManager().getPackageInfo("com.twitter.android", 0); if(info.applicationInfo.enabled) intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=2343965036")); else intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/wrkoutapp"));
откройте страницу в приложении Twitter из другого приложения с помощью Android в 2 этапа:
1.Просто вставьте ниже код (на кнопку нажмите или в любом месте вам нужно)
Intent intent = null; try{ // Get Twitter app this.getPackageManager().getPackageInfo("com.twitter.android", 0); intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USER_ID")); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } catch () { // If no Twitter app found, open on browser intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/USERNAME")); }
2.
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USER_ID"));
чтобы получить USER_ID просто напишите имя пользователя http://gettwitterid.com/ и получить идентификатор пользователя Twitter там
ссылка: https://solutionspirit.com/open-page-twitter-application-android/
надеюсь, что это поможет :)
просто попробуйте этот фрагмент кода. Это тебе поможет.
//Checking If the app is installed, according to the package name Intent intent = new Intent(); intent.setType("text/plain"); intent.setAction(Intent.ACTION_SEND); final PackageManager packageManager = getPackageManager(); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); for (ResolveInfo resolveInfo : list) { String packageName = resolveInfo.activityInfo.packageName; //In case that the app is installed, lunch it. if (packageName != null && packageName.equals("com.twitter.android")) { try { String formattedTwitterAddress = "twitter://user/" ; Intent browseTwitter = new Intent(Intent.ACTION_VIEW, Uri.parse(formattedTwitterAddress)); long twitterId = <Here is the place for the twitter id> browseTwitter.putExtra("user_id", twitterId); startActivity(browseTwitter); return; } catch (Exception e) { } } } //If it gets here it means that the twitter app is not installed. Therefor, lunch the browser. try { String twitterName = <Put the twitter name here> String formattedTwitterAddress = "http://twitter.com/" + twitterName; Intent browseTwitter = new Intent(Intent.ACTION_VIEW, Uri.parse(formattedTwitterAddress)); startActivity(browseTwitter); } catch (Exception e) { }