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“
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