Я посмотрел источник Intent, и похоже, что установка типа намерения удаляет данные, а установка данных - тип. Вот что я нашел:
public Intent setData(Uri data) {
mData = data;
mType = null;
return this;
}
public Intent setType(String type) {
mData = null;
mType = type;
return this;
}
public Intent setDataAndType(Uri data, String type) {
mData = data;
mType = type;
return this;
}
Таким образом, тип настройки переопределяет мои данные, предоставленные в Uri.parse ("smsto:" + phoneNumber). Я также пытался использовать setDataAndType, но тогда Android просто не может найти подходящее намерение для запуска такой комбинации ... Так что это окончательное решение:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("address", phoneNumber);
intent.putExtra("sms_body", messageBody);
intent.setData(Uri.parse("smsto:" + phoneNumber));
context.startActivity(intent);
Кажется, на разных устройствах работает, на чем я могу протестировать. Я надеюсь, что это будет полезно для всех, кто сталкивается с той же проблемой.
ура!