First pass at allowing user to share images from other apps to Mastalab. Currently only allows for single images.

This commit is contained in:
PhotonQyv 2017-08-21 16:55:54 +01:00
parent 18edbec7a6
commit be47c3cead
3 changed files with 56 additions and 1 deletions

View File

@ -46,6 +46,16 @@
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<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>
<activity android:name="fr.gouv.etalab.mastodon.activities.LoginActivity"
android:windowSoftInputMode="stateAlwaysHidden"

View File

@ -20,6 +20,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
@ -429,7 +430,7 @@ public class MainActivity extends AppCompatActivity
toolbarTitle.setText(R.string.home_menu);
matchingIntent = true;
}
}else if( Intent.ACTION_SEND.equals(action) && type != null ){
}else if(( Intent.ACTION_SEND.equals(action) && type != null )) {
if ("text/plain".equals(type)) {
String sharedSubject = intent.getStringExtra(Intent.EXTRA_SUBJECT);
String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
@ -442,6 +443,21 @@ public class MainActivity extends AppCompatActivity
startActivity(intentToot);
}
}
else if (type.startsWith("image/"))
{
Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (imageUri != null) {
Intent intentToot = new Intent(getApplicationContext(), TootActivity.class);
Bundle b = new Bundle();
b.putParcelable("sharedUri", imageUri);
intentToot.putExtras(b);
startActivity(intentToot);
}
}
}
intent.replaceExtras(new Bundle());
intent.setAction("");

View File

@ -15,6 +15,7 @@
package fr.gouv.etalab.mastodon.activities;
import android.app.Activity;
import android.net.Uri;
import android.support.v7.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
@ -141,6 +142,7 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc
private HorizontalScrollView picture_scrollview;
private int currentCursorPosition, searchLength;
private TextView toot_space_left;
private Uri sharedUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -231,6 +233,7 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc
tootReply = b.getParcelable("tootReply");
sharedContent = b.getString("sharedContent", null);
sharedSubject = b.getString("sharedSubject", null);
sharedUri = b.getParcelable("sharedUri");
restored = b.getLong("restored", -1);
}
if( restored != -1 ){
@ -276,10 +279,16 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc
}
toot_content.setText( String.format("\n%s", sharedContent));
}
attachments = new ArrayList<>();
int charsInCw = 0;
int charsInToot = 0;
if (sharedUri != null)
{
uploadSharedImage(sharedUri);
}
boolean isAccountPrivate = account.isLocked();
if(isAccountPrivate){
@ -483,6 +492,26 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc
mToast.show();
}
public void uploadSharedImage(Uri uri)
{
picture_scrollview.setVisibility(View.VISIBLE);
if (uri != null) {
try {
InputStream inputStream = getContentResolver().openInputStream(uri);
loading_picture.setVisibility(View.VISIBLE);
toot_picture.setEnabled(false);
new UploadActionAsyncTask(getApplicationContext(), inputStream, TootActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} catch (FileNotFoundException e) {
Toast.makeText(getApplicationContext(), R.string.toot_select_image_error, Toast.LENGTH_LONG).show();
loading_picture.setVisibility(View.GONE);
toot_picture.setEnabled(true);
e.printStackTrace();
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);