2016-06-10 2 views
1

Я пробую следующий код для отправки сообщений в линейное приложение. Оно работает; однако перед отправкой сообщения он перейдет на страницу друзей линии, и мне нужно выбрать друзей, которым я хочу отправлять сообщения. Как мне изменить код, который я мог бы выбрать друзей в коде вместо того, чтобы вручную выбирать друзей.Использование другого приложения для отправки сообщения в строку приложения

public class MainActivity extends AppCompatActivity { 

static final int REQUEST_ACTION_PICK = 1; 
public static final String PACKAGE_NAME = "jp.naver.line.android"; 
public static final String CLASS_NAME = "jp.naver.line.android.activity.selectchat.SelectChatActivity"; 
private List<ApplicationInfo> m_appList; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    sendTextHandler(this); 
} 


public void sendTextHandler(MainActivity view) { 
    String sendText = ((TextView)findViewById(R.id.send_text)).getText().toString(); 
    if(checkLineInstalled()){ 
     Intent intent = new Intent(Intent.ACTION_SEND); 
     intent.setClassName(PACKAGE_NAME, CLASS_NAME); 
     intent.setType("text/plain"); 
     intent.putExtra(Intent.EXTRA_TEXT, sendText); 
     startActivity(intent); 
    }else{ 
     Toast toast = Toast.makeText(this, "LINEがインストールされていません", Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 
private boolean checkLineInstalled(){ 
    PackageManager pm = getPackageManager(); 
    m_appList = pm.getInstalledApplications(0); 
    boolean lineInstallFlag = false; 
    for (ApplicationInfo ai : m_appList) { 
     if(ai.packageName.equals(PACKAGE_NAME)){ 
      lineInstallFlag = true; 
      break; 
     } 
    } 
    return lineInstallFlag; 
} 

} 

Код https://gist.github.com/ekos/3993270.

+0

Проблема здесь в том, что вы хотите определить имя друзей в самом коде. Я имею в виду, что не обязательно, чтобы пользователь отправлял сообщение одному и тому же человеку все время. Он/она отправляет msg A человеку X и msg B лицу Y. Так что если u исправить в коде, что msg пойдет на человека X, тогда приложение станет менее полезным. Пожалуйста, поправьте меня, если я ошибаюсь. –

+0

Вы правы, но я должен разрешить пользователям выбирать друзей, которым они хотят отправлять сообщения, в первый раз, когда они используют приложение, а когда что-то произошло, это заставит мое приложение отправлять сообщения. Пользователь слишком неудобен для выбора друзей, которым они хотят отправлять сообщения каждый раз. –

+0

Итак, вы хотите, чтобы пользователь выбирал людей в начале сеанса. То, что я испытал с другим чат-приложением, редко бывает возможным. Но для LINE u следует пройти через документацию. U сначала нужно будет получить список друзей зарегистрированного пользователя, покажите его в приложении ur один раз и когда пользователь выберет имя, сохраните его. Передайте эти имена в намерении к LINE-приложению (но для этого вам нужно выяснить, имеет ли намерение LINE какое-то условие для этого или нет) –

ответ

0

Если вы хотите, чтобы иметь возможность открыть конкретного пользователя на основе ID вы можете сделать следующее:

String userId = findUserId(); 
String sendText = "line://ti/p/~" + userId; 
Intent intent = null; 
try { 
    intent = Intent.parseUri(sendText, Intent.URI_INTENT_SCHEME); 
} catch (URISyntaxException e) { 
    e.printStackTrace(); 
} 
startActivity(intent); 

Если вы хотите, чтобы сообщение, а затем иметь возможность выбирать, кого послать его вы можете использовать следующее:

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(Uri.parse("line://msg/text/" + getMessage())); 
startActivity(intent); 
+0

Здравствуйте, у меня проблема с этим. Линейное приложение выйдет из строя, если пользователь не зайдет в систему Не могли бы вы помочь? –

+0

Какая часть рушится? Была ли это «строка: // msg/text /» или была ли она «строка: // ti/p/~» – CMcAllister

+0

, как найти идентификатор пользователя imo? – Pankaj