Merged in PhotonQyv/mastodon_etalab/ImageIntent (pull request #68)

ImageIntent
This commit is contained in:
PhotonQyv 2017-08-21 17:42:59 +00:00 committed by tom79
commit 65c1453d79
3 changed files with 52 additions and 1 deletions

View File

@ -46,6 +46,11 @@
<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>
</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;
@ -478,7 +479,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);
@ -491,6 +492,21 @@ public class MainActivity extends AppCompatActivity
startActivity(intentToot);
}
}
// TODO: Sort out multiple images
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

@ -16,6 +16,8 @@ package fr.gouv.etalab.mastodon.activities;
import android.app.Activity;
import android.support.v4.content.ContextCompat;
import android.net.Uri;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
@ -142,6 +144,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) {
@ -232,6 +235,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 ){
@ -281,6 +285,12 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc
int charsInCw = 0;
int charsInToot = 0;
// TODO: Sort out multiple images
if (sharedUri != null)
{
uploadSharedImage(sharedUri);
}
boolean isAccountPrivate = account.isLocked();
if(isAccountPrivate){
@ -486,6 +496,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);