2015-06-13 3 views
0

В моем андроида приложения У меня есть 4 кнопки для Facebook, Viber, Телеграмма и Whatsapp, и я хочу поделиться разное содержание, основываясь на каждой кнопке.андроид ACTION_SEND поделиться с конкретным приложением только

Например, если пользователь нажимает кнопку viber Я хочу, чтобы пользователь ACTION_SEND, чтобы разделить контент только с viber.

Я нашел THIS, в котором объясняется, как это сделать для facebook и twitter, но кажется, что он вызывает конкретное имя класса этого приложения, которое я не знаю, что будет для приложений, которые я хочу использовать, кроме facebook.

ответ

2

Все приложения для Android имеют уникальный идентификатор, поэтому сначала мы должны проверить, установлены ли эти приложения на устройстве пользователя, и затем мы можем передать уникальный идентификатор с помощью намерения для совместного использования. Есть ли в соответствии ниже:

  1. Уникальные идентификаторы для различных приложений:

    Viber : com.viber.voip
    Telegram : org.telegram.messenger
    Whatsapp : com.whatsapp

  2. Проверьте, установлены ли эти приложения и, если установлен, то отправлять сообщения через намерение.

    private void sendMessage(Context context,String message, String appIds) 
    {  
    final boolean isAppInstalled =isAppAvailable(context, appIds); 
    
    if (isAppInstalled) 
    { 
        Intent myIntent = new Intent(Intent.ACTION_SEND); 
        myIntent.setType("text/plain"); 
        myIntent.setPackage(appIds); 
        myIntent.putExtra(Intent.EXTRA_TEXT, message); 
        mUIActivity.startActivity(Intent.createChooser(myIntent, "Share with")); 
    } 
    else 
    { 
        Toast.makeText(context, "App not Installed", Toast.LENGTH_SHORT).show(); 
    } 
    } 
    

Указывает, установлен ли указанное приложение, и может использоваться в качестве намерения. Этот метод проверяет диспетчер пакетов на установленные пакеты, которые могут реагировать на намерение с указанным приложением. Если подходящий пакет не найден, этот метод возвращает false.

private boolean isAppAvailable(Context context, String appName) 
     { 
      PackageManager pm = context.getPackageManager(); 
      try 
      { 
       pm.getPackageInfo(appName, PackageManager.GET_ACTIVITIES); 
       return true; 
      } 
      catch (NameNotFoundException e) 
      { 
       return false; 
      } 
     } 
+0

Спасибо за короткий ответ, я уже сделал почти все, что вы упомянули, кроме части sendMessage. Я проверю и соглашусь через мгновение. благодаря –

Смежные вопросы