2016-08-11 10 views
31

Nie mogę wysłać MMS-a z obrazem w aplikacji Google Messenger. Podczas gdy niektóre urządzenia z systemem Android domyślnie instalują tę aplikację SMS i do tego, kiedy wysyłam MMS przy użyciu Intent niż to nie działa.Aplikacja Google Messenger nie załącza obrazu podczas wysyłania MMS

Problem polega na ustawieniu zawartości ToNumber i MMS, ale obraz nie jest załączony w tej aplikacji.

Uwaga: już ustawić ustawienia MMS APN na moich urządzeń, a ja już sprawdzić na wielu urządzeniach z samej aplikacji, takich jak Samsung, Motorola G4 S4 Plus.

To jest mój kod aktualnie używany.

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 'zwraca katalog, w którym tylko twoja aplikacja ma uprawnienia. Żadna inna aplikacja nie może z niego odczytać. Będziesz musiał ujawnić swój plik za pośrednictwem [FileProvider] (https://developer.android.com/reference/android/support/v4/content/FileProvider.html). –

+0

Już próbuję z tym, ale nie działa. –

+0

** Następnie zaktualizuj pytanie, abyśmy wiedzieli, z czym aktualnie pracujesz. ** Czy jesteś absolutnie pewny, że a) wykonałeś wszystkie czynności, w tym przyznając tymczasowe uprawnienia b) czy ścieżka do pliku jest właściwa? Pliki zewnętrzne dir punktów najprawdopodobniej do '/ storage/emulated/0/Android/data//files', który jest pamięci wewnętrznej, a nie karty SD. –

Odpowiedz

0

file_paths.xml i manifest.xml są takie same jak w kodzie.

tworzyć zawartość URI:

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

Sprawdzenie zawartości URI:

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

Tworzenie zamiar:

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"); 

Rozwiązanie testowane na:

a) Galaxy S4, Android 5.0, Messenger wersja: 1.9.036

b) Emulator: Nexus 5, Android 6.0, wiadomości ver: 1.0.001

Powiązane problemy