Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@ Image selector for Android device. Support single choice and multi-choice.
Add module `multi-image-selector` as your dependence. in your `build.gradle` :
```java
repositories {
maven { url "https://jitpack.io" }
jcenter()
}

dependencies {
compile 'com.github.lovetuzitong:MultiImageSelector:1.2'
//compile 'com.github.lovetuzitong:MultiImageSelector:1.2'
compile 'com.hx.multi-image-selector:multi-image-selector:1.2.2'
}
```

Expand Down Expand Up @@ -189,4 +190,4 @@ copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

>The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
copies or substantial portions of the Software.
5 changes: 3 additions & 2 deletions README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@
把模块 `multi-image-selector` 作为你的项目依赖添加到工程中. 在项目`build.gradle` 中:
```java
repositories {
maven { url "https://jitpack.io" }
jcenter()
}

dependencies {
compile 'com.github.lovetuzitong:MultiImageSelector:1.2'
//compile 'com.github.lovetuzitong:MultiImageSelector:1.2'
compile 'com.hx.multi-image-selector:multi-image-selector:1.2.2'
}
```

Expand Down
8 changes: 4 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
compileSdkVersion 25
buildToolsVersion '25.0.1'

defaultConfig {
applicationId "me.nereo.multiimageselector"
minSdkVersion 12
targetSdkVersion 23
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
Expand All @@ -21,6 +21,6 @@ android {

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:23.4.0'
compile project(':multi-image-selector')
compile 'com.android.support:appcompat-v7:25.1.0'
}
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

<activity
android:name=".MainActivity"
android:label="@string/app_name" >
Expand Down
42 changes: 42 additions & 0 deletions bintray-release.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
apply plugin: 'com.novoda.bintray-release'

// This generates sources.jar
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}

task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
failOnError false
}

// This generates javadoc.jar
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}

artifacts {
archives javadocJar
archives sourcesJar
}

// javadoc configuration
javadoc {
options {
encoding "UTF-8"
charSet 'UTF-8'
author true
}
}

afterEvaluate {
Task bintrayUploadTask = tasks.findByName('bintrayUpload')
Task uploadArchivesTask = tasks.findByName('uploadArchives')
if (bintrayUploadTask != null && uploadArchivesTask != null) {
bintrayUploadTask.dependsOn uploadArchivesTask
}
}

4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'

classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.novoda:bintray-release:0.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
Expand Down
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Wed May 18 11:49:16 CST 2016
#Fri Jan 20 11:08:16 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
61 changes: 53 additions & 8 deletions multi-image-selector/build.gradle
Original file line number Diff line number Diff line change
@@ -1,27 +1,72 @@
apply plugin: 'com.android.library'

android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
compileSdkVersion 25
buildToolsVersion '25.0.1'

defaultConfig {
minSdkVersion 12
targetSdkVersion 23
targetSdkVersion 25
versionCode 1
versionName "1.1"
versionName "1.2.2"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

lintOptions {
abortOnError false
}
resourcePrefix "mis_"
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.squareup.picasso:picasso:2.4.0'
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.support:appcompat-v7:25.1.0'
}

tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
}

apply from: rootProject.projectDir.absolutePath + "/bintray-release.gradle"

// load properties
Properties properties = new Properties()
File localPropertiesFile = project.file("$rootProject.projectDir.absolutePath /local.properties");
if (localPropertiesFile.exists()) {
properties.load(localPropertiesFile.newDataInputStream())
}
File projectPropertiesFile = project.file("project.properties");
if (projectPropertiesFile.exists()) {
properties.load(projectPropertiesFile.newDataInputStream())
}

// read properties
def projectName = properties.getProperty("project.name")
def projectGroupId = properties.getProperty("project.groupId")
def projectArtifactId = properties.getProperty("project.artifactId")
def projectVersionName = android.defaultConfig.versionName
def projectSiteUrl = properties.getProperty("project.siteUrl")
def projectGitUrl = properties.getProperty("project.gitUrl")

def bintray_Org = properties.getProperty("bintray.org")
def bintray_User = properties.getProperty("bintray.user")
def bintrayApikey = properties.getProperty("bintray.apikey")

publish {
userOrg = bintray_Org
groupId = projectGroupId
artifactId = projectArtifactId
uploadName = projectName
website = projectSiteUrl
repository = projectGitUrl
publishVersion = projectVersionName
bintrayUser = bintray_User
bintrayKey = bintrayApikey
dryRun = true
}
6 changes: 6 additions & 0 deletions multi-image-selector/project.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#project
project.name=Multi-Image-Selector
project.groupId=com.hx.multi-image-selector
project.artifactId=multi-image-selector
project.siteUrl=https://github.com/qq549631030/MultiImageSelector
project.gitUrl=https://github.com/qq549631030/MultiImageSelector.git
13 changes: 11 additions & 2 deletions multi-image-selector/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,18 @@

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />

<application android:allowBackup="true">

<application>
<provider
android:name=".utils.MISFileProvider"
android:authorities="${applicationId}.mis.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/mis_file_paths"/>
</provider>
<activity
android:configChanges="orientation|screenSize"
android:name="me.nereo.multi_image_selector.MultiImageSelectorActivity" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import android.graphics.Point;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.provider.MediaStore;
Expand All @@ -21,6 +22,7 @@
import android.support.v4.app.LoaderManager;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.FileProvider;
import android.support.v4.content.Loader;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.ListPopupWindow;
Expand Down Expand Up @@ -57,7 +59,7 @@ public class MultiImageSelectorFragment extends Fragment {

public static final String TAG = "MultiImageSelectorFragment";

private static final int REQUEST_STORAGE_WRITE_ACCESS_PERMISSION = 110;
private static final int REQUEST_CAMERA_PERMISSION = 110;
private static final int REQUEST_CAMERA = 100;

private static final String KEY_TEMP_FILE = "key_temp_file";
Expand Down Expand Up @@ -303,11 +305,12 @@ public void onConfigurationChanged(Configuration newConfig) {
* Open camera
*/
private void showCameraAction() {
if(ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE)
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN // Permission was added in API Level 16
&&ContextCompat.checkSelfPermission(getContext(), Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED){
requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,
getString(R.string.mis_permission_rationale_write_storage),
REQUEST_STORAGE_WRITE_ACCESS_PERMISSION);
requestPermission(Manifest.permission.CAMERA,
getString(R.string.mis_permission_rationale_camera),
REQUEST_CAMERA_PERMISSION);
}else {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
Expand All @@ -317,7 +320,13 @@ private void showCameraAction() {
e.printStackTrace();
}
if (mTmpFile != null && mTmpFile.exists()) {
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTmpFile));
Uri imageUri = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
imageUri = FileProvider.getUriForFile(getContext(), getContext().getPackageName() + ".mis.fileprovider", mTmpFile);//通过FileProvider创建一个content类型的Uri
} else {
imageUri = Uri.fromFile(mTmpFile);
}
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, REQUEST_CAMERA);
} else {
Toast.makeText(getActivity(), R.string.mis_error_image_not_exist, Toast.LENGTH_SHORT).show();
Expand Down Expand Up @@ -348,7 +357,7 @@ public void onClick(DialogInterface dialog, int which) {

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(requestCode == REQUEST_STORAGE_WRITE_ACCESS_PERMISSION){
if(requestCode == REQUEST_CAMERA_PERMISSION){
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
showCameraAction();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package me.nereo.multi_image_selector.utils;

import android.support.v4.content.FileProvider;

/**
* @author huangx
* @date 2017/12/15
*/

public class MISFileProvider extends FileProvider {
}
1 change: 1 addition & 0 deletions multi-image-selector/src/main/res/values-zh/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@
<string name="mis_permission_dialog_ok">好</string>
<string name="mis_permission_dialog_cancel">拒绝</string>
<string name="mis_permission_rationale">浏览图片需要您提供浏览存储的权限</string>
<string name="mis_permission_rationale_camera">拍摄照片需要您提交摄像头权限</string>
<string name="mis_permission_rationale_write_storage">保存拍照图片需要您提供写存储权限</string>
</resources>
1 change: 1 addition & 0 deletions multi-image-selector/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@
<string name="mis_permission_dialog_ok">OK</string>
<string name="mis_permission_dialog_cancel">CANCEL</string>
<string name="mis_permission_rationale">Storage read permission is needed to pick files.</string>
<string name="mis_permission_rationale_camera">Camera permission is needed to take photo.</string>
<string name="mis_permission_rationale_write_storage">Storage write permission is needed to save the image.</string>
</resources>
6 changes: 6 additions & 0 deletions multi-image-selector/src/main/res/xml/mis_file_paths.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<root-path path="" name="mis_camera_photos" />
</paths>
</resources>