2016-08-11 11 views
31

Я не могу отправить MMS с изображением в приложении Messenger Google. Хотя некоторые из устройств Android по умолчанию устанавливают это приложение SMS, и для этого, когда я отправляю MMS с помощью Intent, он не работает.Приложение Google Messenger не прикрепляет изображение при отправке MMS

Проблема заключается в том, что количество сообщений и содержание MMS установлено, но изображение не прикрепляется к этому приложению.

Примечание: Я уже установить настройки MMS APN на своих устройствах, и я уже проверить на нескольких устройствах с таким же приложение, как Samsung, Motorola s4 G4 Plus.

Это мой код в настоящее время я использовал.

String toNumbers = "comma seperated mobile numbers"; 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) 
    { 
     String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(getActivity()); 

     Intent sendIntent = new Intent(Intent.ACTION_SEND); 
     sendIntent.putExtra("address", toNumbers); 
     sendIntent.setPackage("com.android.mms"); 
     //Uri uri = Uri.fromFile(new File(getContext().getExternalFilesDir(""), "image.png")); 

     File imagePath = new File(getFilesDir(), "images"); 
     File newFile = new File(imagePath, "image.png"); 
     Uri uri = getUriForFile(this, "packagename", newFile); 

     File file = new File(contentUri.getPath()); 
     if (file.exists()) { 
      //Do something 
      Log.d("TAG","Exist"); 
     } 
     sendIntent.putExtra(Intent.EXTRA_STREAM, uri); 
     sendIntent.setType("image/png"); 
     sendIntent.putExtra("sms_body", getString(R.string.sms_body, HostName)); 
     if (defaultSmsPackageName != null) 
     { 
      sendIntent.setPackage(defaultSmsPackageName); 
     } 
     startActivityForResult(sendIntent, Constants.SEND_SMS_REQUEST); 


    } 
    else 
    { 
     Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW); 
     smsIntent.putExtra("address", toNumbers); 
     smsIntent.setPackage("com.android.mms"); 
     Uri uri = Uri.fromFile(new File(getContext().getExternalFilesDir(""), "image.png")); 
     smsIntent.putExtra(Intent.EXTRA_STREAM, uri); 
     smsIntent.setType("image/png"); 
     smsIntent.putExtra("sms_body", getString(R.string.sms_body, HostName)); 
     startActivityForResult(smsIntent, Constants.SEND_SMS_REQUEST); 
    } 

file_paths.xml

<paths xmlns:android="http://schemas.android.com/apk/res/android"> 
<files-path 
    name="files" 
    path="images/" /> 

</paths> 

manifeast.xml

<provider 
     android:name="android.support.v4.content.FileProvider" 
     android:authorities="packagename" 
     android:exported="false" 
     android:grantUriPermissions="true"> 
     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/file_paths" /> 


    </provider> 
+0

'getExternalFilesDir 'возвращает каталог, доступ к которому имеет только ваше приложение. Никакое другое приложение не может читать. Вам нужно будет открыть файл с помощью [FileProvider] (https://developer.android.com/reference/android/support/v4/content/FileProvider.html). –

+0

Я уже пытаюсь с этим, но его не работает. –

+0

** Ну, тогда обновите вопрос, чтобы мы знали, с чем вы сейчас работаете. ** Вы абсолютно уверены, что вы выполнили все шаги, включая предоставление временных разрешений. B) Правильно ли путь к файлу? Внешние файлы dir указывают, скорее всего, на '/ storage/emulated/0/Android/data/<идентификатор приложения вашего приложения>/files', который является внутренней памятью, а не SD-картой. –

ответ

0

file_paths.xml и manifest.xml такие же, как в вашем коде.

Создание контента URI:

File imagePath = new File(getFilesDir(), "images"); 
File newFile = new File(imagePath, "image.png"); 
Uri contentUri = FileProvider.getUriForFile(this, "packagename", newFile); 

Проверка содержимого URI:

ImageView imageView = (ImageView) findViewById(R.id.imageview); 
//Your image should be displayed 
imageView.setImageURI(contentUri); 

Создание намерения:

Intent sendIntent = new Intent(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, "Text to send"); 
sendIntent.putExtra(Intent.EXTRA_STREAM, contentUri); 
sendIntent.setType("image/png"); 

Решение протестирован на:

а) Galaxy S4, Android 5.0 Коммуникатор версии: 1.9.036

б) Эмулятор: Nexus 5, Android 6.0, Сообщения вер: 1.0.001

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

  • Нет связанных вопросов^_^