Ответ 1
Все Android-приложения имеют уникальный идентификатор, идентификатор рынка. Если вы посмотрите в Google Play или на поисковый рынок google://details? Id = org.telegram, он отправит вас в
https://play.google.com/store/apps/details?id=org.telegram.messenger
Если вы отправляете намерение с помощью:
waIntent.setPackage("org.telegram.messenger");
Он будет работать.
Если вы предпочитаете немного сложную систему, я рекомендую вам использовать:
/**
* Intent to send a telegram message
* @param msg
*/
void intentMessageTelegram(String msg)
{
final String appName = "org.telegram.messenger";
final boolean isAppInstalled = isAppAvailable(mUIActivity.getApplicationContext(), appName);
if (isAppInstalled)
{
Intent myIntent = new Intent(Intent.ACTION_SEND);
myIntent.setType("text/plain");
myIntent.setPackage(appName);
myIntent.putExtra(Intent.EXTRA_TEXT, msg);//
mUIActivity.startActivity(Intent.createChooser(myIntent, "Share with"));
}
else
{
Toast.makeText(mUIActivity, "Telegram not Installed", Toast.LENGTH_SHORT).show();
}
}
И проверьте, установлено ли с помощью:
/**
* Indicates whether the specified app ins installed and can used as an intent. This
* method checks the package manager for installed packages that can
* respond to an intent with the specified app. If no suitable package is
* found, this method returns false.
*
* @param context The application environment.
* @param appName The name of the package you want to check
*
* @return True if app is installed
*/
public static boolean isAppAvailable(Context context, String appName)
{
PackageManager pm = context.getPackageManager();
try
{
pm.getPackageInfo(appName, PackageManager.GET_ACTIVITIES);
return true;
}
catch (NameNotFoundException e)
{
return false;
}
}