allow setting Wallpaper with the app
This commit is contained in:
parent
fee7704dae
commit
8d63aedf2a
5 changed files with 80 additions and 13 deletions
|
@ -4,6 +4,7 @@
|
|||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.SET_WALLPAPER"/>
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
|
@ -30,6 +31,11 @@
|
|||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
<data android:mimeType="vnd.android.cursor.dir/video"/>
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SET_WALLPAPER"/>
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
|
|
|
@ -5,4 +5,5 @@ public class Constants {
|
|||
public static final String MEDIUM = "medium";
|
||||
public static final String PICK_IMAGE_INTENT = "is_image_pick_intent";
|
||||
public static final String PICK_VIDEO_INTENT = "is_video_pick_intent";
|
||||
public static final String SET_WALLPAPER_INTENT = "is_set_wallpaper_intent";
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ public class MainActivity extends AppCompatActivity
|
|||
|
||||
private static final int STORAGE_PERMISSION = 1;
|
||||
private static final int PICK_MEDIA = 2;
|
||||
private static final int PICK_WALLPAPER = 3;
|
||||
|
||||
private static List<Directory> mDirs;
|
||||
private static Snackbar mSnackbar;
|
||||
|
@ -60,6 +61,7 @@ public class MainActivity extends AppCompatActivity
|
|||
private static boolean mIsSnackbarShown;
|
||||
private static boolean mIsPickImageIntent;
|
||||
private static boolean mIsPickVideoIntent;
|
||||
private static boolean mIsSetWallpaperIntent;
|
||||
private static int mSelectedItemsCnt;
|
||||
|
||||
@Override
|
||||
|
@ -67,12 +69,18 @@ public class MainActivity extends AppCompatActivity
|
|||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
ButterKnife.bind(this);
|
||||
mIsPickImageIntent = isPickImageIntent(getIntent());
|
||||
mIsPickVideoIntent = isPickVideoIntent(getIntent());
|
||||
|
||||
final Intent intent = getIntent();
|
||||
mIsPickImageIntent = isPickImageIntent(intent);
|
||||
mIsPickVideoIntent = isPickVideoIntent(intent);
|
||||
mIsSetWallpaperIntent = isSetWallpaperIntent(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
if (mIsSetWallpaperIntent)
|
||||
return false;
|
||||
|
||||
getMenuInflater().inflate(R.menu.menu, menu);
|
||||
return true;
|
||||
}
|
||||
|
@ -352,13 +360,22 @@ public class MainActivity extends AppCompatActivity
|
|||
return intent != null && intent.getAction() != null && intent.getAction().equals(Intent.ACTION_PICK) && intent.getData() != null;
|
||||
}
|
||||
|
||||
private boolean isSetWallpaperIntent(Intent intent) {
|
||||
return intent != null && intent.getAction() != null && intent.getAction().equals(Intent.ACTION_SET_WALLPAPER);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (requestCode == PICK_MEDIA && resultCode == RESULT_OK && data != null) {
|
||||
if (resultCode == RESULT_OK) {
|
||||
if (requestCode == PICK_MEDIA && data != null) {
|
||||
final Intent result = new Intent();
|
||||
result.setData(data.getData());
|
||||
setResult(RESULT_OK, result);
|
||||
finish();
|
||||
} else if (requestCode == PICK_WALLPAPER) {
|
||||
setResult(RESULT_OK);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
@ -367,10 +384,16 @@ public class MainActivity extends AppCompatActivity
|
|||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
final Intent intent = new Intent(this, MediaActivity.class);
|
||||
intent.putExtra(Constants.DIRECTORY, mDirs.get(position).getPath());
|
||||
|
||||
if (mIsSetWallpaperIntent) {
|
||||
intent.putExtra(Constants.SET_WALLPAPER_INTENT, true);
|
||||
startActivityForResult(intent, PICK_WALLPAPER);
|
||||
} else {
|
||||
intent.putExtra(Constants.PICK_IMAGE_INTENT, mIsPickImageIntent);
|
||||
intent.putExtra(Constants.PICK_VIDEO_INTENT, mIsPickVideoIntent);
|
||||
startActivityForResult(intent, PICK_MEDIA);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package com.simplemobiletools.gallery.activities;
|
||||
|
||||
import android.app.WallpaperManager;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Color;
|
||||
import android.media.MediaScannerConnection;
|
||||
import android.net.Uri;
|
||||
|
@ -12,6 +14,7 @@ import android.provider.MediaStore;
|
|||
import android.support.design.widget.CoordinatorLayout;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.util.Log;
|
||||
import android.util.SparseBooleanArray;
|
||||
import android.view.ActionMode;
|
||||
import android.view.Menu;
|
||||
|
@ -22,6 +25,9 @@ import android.view.View;
|
|||
import android.widget.AdapterView;
|
||||
import android.widget.GridView;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.bumptech.glide.request.animation.GlideAnimation;
|
||||
import com.bumptech.glide.request.target.SimpleTarget;
|
||||
import com.simplemobiletools.gallery.Constants;
|
||||
import com.simplemobiletools.gallery.R;
|
||||
import com.simplemobiletools.gallery.Utils;
|
||||
|
@ -29,6 +35,7 @@ import com.simplemobiletools.gallery.adapters.MediaAdapter;
|
|||
import com.simplemobiletools.gallery.models.Medium;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
@ -39,6 +46,7 @@ import butterknife.ButterKnife;
|
|||
|
||||
public class MediaActivity extends AppCompatActivity
|
||||
implements AdapterView.OnItemClickListener, GridView.MultiChoiceModeListener, GridView.OnTouchListener {
|
||||
private static final String TAG = MediaActivity.class.getSimpleName();
|
||||
@BindView(R.id.media_grid) GridView mGridView;
|
||||
|
||||
private static List<Medium> mMedia;
|
||||
|
@ -247,16 +255,44 @@ public class MediaActivity extends AppCompatActivity
|
|||
}
|
||||
}
|
||||
|
||||
private boolean isSetWallpaperIntent() {
|
||||
return getIntent().getBooleanExtra(Constants.SET_WALLPAPER_INTENT, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
if (mIsPickImageIntent || mIsPickVideoIntent) {
|
||||
final String curItemPath = mMedia.get(position).getPath();
|
||||
if (isSetWallpaperIntent()) {
|
||||
Utils.showToast(this, R.string.setting_wallpaper);
|
||||
|
||||
final int wantedWidth = getWallpaperDesiredMinimumWidth();
|
||||
final int wantedHeight = getWallpaperDesiredMinimumHeight();
|
||||
final float ratio = (float) wantedWidth / wantedHeight;
|
||||
Glide.with(this)
|
||||
.load(new File(curItemPath))
|
||||
.asBitmap()
|
||||
.override((int) (wantedWidth * ratio), wantedHeight)
|
||||
.fitCenter()
|
||||
.into(new SimpleTarget<Bitmap>() {
|
||||
@Override
|
||||
public void onResourceReady(Bitmap bitmap, GlideAnimation anim) {
|
||||
try {
|
||||
WallpaperManager.getInstance(getApplicationContext()).setBitmap(bitmap);
|
||||
setResult(RESULT_OK);
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "item click " + e.getMessage());
|
||||
}
|
||||
finish();
|
||||
}
|
||||
});
|
||||
} else if (mIsPickImageIntent || mIsPickVideoIntent) {
|
||||
final Intent result = new Intent();
|
||||
result.setData(Uri.parse(mMedia.get(position).getPath()));
|
||||
result.setData(Uri.parse(curItemPath));
|
||||
setResult(RESULT_OK, result);
|
||||
finish();
|
||||
} else {
|
||||
final Intent intent = new Intent(this, ViewPagerActivity.class);
|
||||
intent.putExtra(Constants.MEDIUM, mMedia.get(position).getPath());
|
||||
intent.putExtra(Constants.MEDIUM, curItemPath);
|
||||
startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
<string name="renaming_folder">Renaming folder</string>
|
||||
<string name="extension">Extension</string>
|
||||
<string name="file_deleted">File deleted</string>
|
||||
<string name="setting_wallpaper">Setting wallpaper</string>
|
||||
|
||||
<plurals name="folders_deleted">
|
||||
<item quantity="one">1 folder deleted</item>
|
||||
|
|
Loading…
Reference in a new issue