2017-12-25 1 views
0

Ich habe seit über einer Woche mit einem bestimmten Problem gekämpft. Ich möchte Bilder aus meinem BilderApp/Datei-Explorer in meiner App freigeben und dann auf einem privaten Server veröffentlichen. Bilder werden bereits gepostet, wenn die Galerie mit Hilfe einer MultiImage Selector Library aus der App heraus navigiert wird. Ich habe alle Antworten versucht, die ich hier vergeblich getroffen habe, einschließlich der renommierten FileUtils-Klasse, die unter here referenziert wird. Im Laufe meiner Recherchen habe ich festgestellt, dass es viele Grauzonen in Bezug auf den Umgang mit Daten in Apps gibt die Kürze (die schließlich zu Mehrdeutigkeit führt) der Dokumentation und ein damit zusammenhängender Haufen unbeantworteter Fragen in dieser Hinsicht. Nun zu einigen CodeHochladen von Bildern aus der Galerie in meiner Anwendung?

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

      <activity 
     android:name="com.myapp.activity.AppActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.SEND" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:mimeType="image/*" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.intent.action.SEND_MULTIPLE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:mimeType="image/*" /> 
     </intent-filter> 
     </activity> 

Manifest

ich die Datei-Provider enthalten wie i wissen wollen, ob das meine Fähigkeit zu überschreiben Inhalt zu lesen: // URIs oder etwas ..

wo i handle mit der Absicht;

  final Intent shareIntent = getIntent(); 
      if (shareIntent.getAction()!=null) { 
       final String intentAction = shareIntent.getAction(); 
       final String intentFileType = shareIntent.getType(); 

         if (intentAction.equals(Intent.ACTION_SEND)) { 
           if (intentFileType.startsWith("image/")) { 
            byte[] imageBytes = null; 
            Uri uri = (Uri) shareIntent.getParcelableExtra(Intent.EXTRA_STREAM); 
            try { 
             InputStream inputStream = getContentResolver().openInputStream(uri); 
             imageBytes= getBytes(inputStream); 
            } catch (FileNotFoundException e) { 
             e.printStackTrace(); 
            } catch (IOException e) { 
             e.printStackTrace(); 
            } 

            RequestBody requestFile = RequestBody.create(MediaType.parse("image/*"), imageBytes); 
            image1 = MultipartBody.Part.createFormData("image1", "new_image", requestFile); 
     } 
    } 
    } 
    public byte[] getBytes(InputStream is) throws IOException{ 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    int buffSize =1024; 
    byte[] buff = new byte[buffSize]; 
    int len=0; 
    while((len = is.read(buff))!= -1){ 
     baos.write(buff,0,len); 
    } 
    return baos.toByteArray(); 
} 

Aktivität

Ps: Ich habe Berechtigungen bereits behandelt. Wie ich schon sagte kann ich Bilder aus der App posten. Für diese besondere Merkmal der Server sagt: „Die Datei existiert nicht“

Antwort

0

Bei Klick auf die Galerie-Taste starten startActivityForResult wie folgt:

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), GET_FROM_GALLERY); 

prüfen Link

How to upload image from gallery in android

+0

Ich bin nicht von der App zur Galerie navigieren. Ich komme von der Galerie oder Bilder App zu meiner App mit dem Share-Button in der Android-Galerie App. Danke für die Antwort – Itoooo

Verwandte Themen