Ответ 1
Это сработало для меня: twitter://user?user_id=id_num
Чтобы узнать идентификатор: http://www.idfromuser.com/
Я искал способ запустить приложение Twitter и открыть указанную страницу из моего приложения без веб-просмотра. Я нашел решение для Facebook здесь: Открытие приложения facebook на указанной странице профиля
Мне нужно что-то подобное.
РЕДАКТИРОВАТЬ Я только что нашел решение:
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]")));
}
Это сработало для меня: 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);
UPDATE
Добавлен intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
, чтобы исправить проблему, когда твиттер открывался внутри моего приложения, а не как новый вид.
Откройте страницу в приложении 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/
Надеюсь, это поможет :)
Мой ответ основывается на широко распространенных ответах от fg.radigales и Harry. Если у пользователя установлен Twitter, но он отключен (например, с помощью App Quarantine), этот метод не будет работать. Будет выбрано намерение для приложения 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"));
Просто попробуйте этот фрагмент кода. Это поможет вам.
//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)
{
}
const latitude = "40.7127753";
const longitude = "-74.0059728";
const label = "New York, NY, USA";
const url = Platform.select({
ios: "maps:" + latitude + "," + longitude + "?q=" + label,
android: "geo:" + latitude + "," + longitude + "?q=" + label
});
Linking.openURL(url);
или с проверкой, есть ли приложение Google на устройстве
const latitude = "40.7127753";
const longitude = "-74.0059728";
const label = "New York, NY, USA";
const url = Platform.select({
ios: "maps:" + latitude + "," + longitude + "?q=" + label,
android: "geo:" + latitude + "," + longitude + "?q=" + label
});
Linking.canOpenURL(url).then(supported => {
if (supported) {
return Linking.openURL(url);
} else {
browser_url =
"https://www.google.de/maps/@" +
latitude +
"," +
longitude +
"?q=" +
label;
return Linking.openURL(browser_url);
}
});
Для меня это помогло открыть приложение Twitter, если оно у вас есть, или перейти в веб-браузер:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/"+"USERID"));
startActivity(intent);