kandi background
Explore Kits

easypermissions | Simplify Android M system permissions | Android library

 by   googlesamples Java Version: 3.0.0 License: Apache-2.0

 by   googlesamples Java Version: 3.0.0 License: Apache-2.0

Download this library from

kandi X-RAY | easypermissions Summary

easypermissions is a Java library typically used in Mobile, Android applications. easypermissions has no bugs, it has no vulnerabilities, it has build file available, it has a Permissive License and it has medium support. You can download it from GitHub, Maven.
EasyPermissions is a wrapper library to simplify basic system permissions logic when targeting Android M or higher. Note: If your app is written in Kotlin consider the easypermissions-ktx library which adds Kotlin extensions to the core EasyPermissions library.
Support
Support
Quality
Quality
Security
Security
License
License
Reuse
Reuse

kandi-support Support

  • easypermissions has a medium active ecosystem.
  • It has 9119 star(s) with 1387 fork(s). There are 275 watchers for this library.
  • It had no major release in the last 12 months.
  • There are 13 open issues and 196 have been closed. On average issues are closed in 5 days. There are no pull requests.
  • It has a neutral sentiment in the developer community.
  • The latest version of easypermissions is 3.0.0
easypermissions Support
Best in #Android
Average in #Android
easypermissions Support
Best in #Android
Average in #Android

quality kandi Quality

  • easypermissions has 0 bugs and 0 code smells.
easypermissions Quality
Best in #Android
Average in #Android
easypermissions Quality
Best in #Android
Average in #Android

securitySecurity

  • easypermissions has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
  • easypermissions code analysis shows 0 unresolved vulnerabilities.
  • There are 0 security hotspots that need review.
easypermissions Security
Best in #Android
Average in #Android
easypermissions Security
Best in #Android
Average in #Android

license License

  • easypermissions is licensed under the Apache-2.0 License. This license is Permissive.
  • Permissive licenses have the least restrictions, and you can use them in most projects.
easypermissions License
Best in #Android
Average in #Android
easypermissions License
Best in #Android
Average in #Android

buildReuse

  • easypermissions releases are available to install and integrate.
  • Deployable package is available in Maven.
  • Build file is available. You can build the component from source.
  • Installation instructions, examples and code snippets are available.
  • easypermissions saves you 1112 person hours of effort in developing the same functionality from scratch.
  • It has 2515 lines of code, 245 functions and 41 files.
  • It has medium code complexity. Code complexity directly impacts maintainability of the code.
easypermissions Reuse
Best in #Android
Average in #Android
easypermissions Reuse
Best in #Android
Average in #Android
Top functions reviewed by kandi - BETA

kandi has reviewed easypermissions and discovered the below as its top functions. This is intended to give you an instant insight into easypermissions implemented functionality, and help decide if they suit your requirements.

  • Associates a request permissions result .
  • Handle click .
  • Shows a rationale dialog .
  • Attaches the parent fragment to the parent fragment
  • This method is called when the app settings are received .
  • Creates an AppSettingsDialog from an intent .
  • On create view .
  • Create support dialog .
  • Returns a string representation of this permission request .
  • Get context .

easypermissions Key Features

Simplify Android M system permissions

Installation

copy iconCopydownload iconDownload
dependencies {
    // For developers using AndroidX in their applications
    implementation 'pub.devrel:easypermissions:3.0.0'
 
    // For developers using the Android Support Library
    implementation 'pub.devrel:easypermissions:2.0.1'
}

Basic

copy iconCopydownload iconDownload
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        // Forward results to EasyPermissions
        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
    }
}

Request Permissions

copy iconCopydownload iconDownload
@AfterPermissionGranted(RC_CAMERA_AND_LOCATION)
private void methodRequiresTwoPermission() {
    String[] perms = {Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION};
    if (EasyPermissions.hasPermissions(this, perms)) {
        // Already have permission, do the thing
        // ...
    } else {
        // Do not have permissions, request them now
        EasyPermissions.requestPermissions(this, getString(R.string.camera_and_location_rationale),
                RC_CAMERA_AND_LOCATION, perms);
    }
}

Required Permissions

copy iconCopydownload iconDownload
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
    Log.d(TAG, "onPermissionsDenied:" + requestCode + ":" + perms.size());

    // (Optional) Check whether the user denied any permissions and checked "NEVER ASK AGAIN."
    // This will display a dialog directing them to enable the permission in app settings.
    if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
        new AppSettingsDialog.Builder(this).build().show();
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE) {
        // Do something after user returned from app settings screen, like showing a Toast.
        Toast.makeText(this, R.string.returned_from_app_settings_to_activity, Toast.LENGTH_SHORT)
                .show();
    }
}

Interacting with the rationale dialog

copy iconCopydownload iconDownload
@Override
public void onRationaleAccepted(int requestCode) {
    // Rationale accepted to request some permissions
    // ...
}

@Override
public void onRationaleDenied(int requestCode) {
    // Rationale denied to request some permissions
    // ...
}

LICENSE

copy iconCopydownload iconDownload
	Copyright 2017 Google

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

No signature of method: build_1upy3e43ytufmh38cj8qq5tbo.android() is applicable for argument types: (build_1upy3e43ytufmh38cj8qq5tbo$_run_closure1)

copy iconCopydownload iconDownload
dexOptions {
    incremental true
}
lint {
    checkReleaseBuilds false
}

Error when selecting 1 image from Intent Multiple

copy iconCopydownload iconDownload
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == PICK_IMAGE_MULTIPLE  && resultCode == Activity.RESULT_OK && null != data) {
        if(data.clipData != null) {
            val count = data.clipData!!.itemCount
            for (i in 0 until count) {
                var imageUri: Uri = data.clipData!!.getItemAt(i).uri
                ImageList.add(imageUri)
            }
        }else if(data.data != null) {
            var imageUri: Uri = data.data!!
            ImageList.add(imageUri)
        }
        uploadImage()
    }

}

Android - problem with Google API and Youtube Data v3

copy iconCopydownload iconDownload
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Easypermissions does not return to Method

copy iconCopydownload iconDownload
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}

Observer pattern is not working in Android MVVM

copy iconCopydownload iconDownload
_zones.value = zonesFromDB
_zones.postValue(zonesFromDB)
-----------------------
_zones.value = zonesFromDB
_zones.postValue(zonesFromDB)

Optional insert into database?

copy iconCopydownload iconDownload
var image: Bitmap?=null

Bugs and Crashes on my App Release Version

copy iconCopydownload iconDownload
android {
    ...

    buildTypes {
        release {
            minifyEnabled false // disable proguard
            ...
        }
    }
}
-keep public class com.myapp.models.** {
  public protected private *;
}
-keep public class com.myapp.models.MyModel {
  public protected private *;
}
-----------------------
android {
    ...

    buildTypes {
        release {
            minifyEnabled false // disable proguard
            ...
        }
    }
}
-keep public class com.myapp.models.** {
  public protected private *;
}
-keep public class com.myapp.models.MyModel {
  public protected private *;
}
-----------------------
android {
    ...

    buildTypes {
        release {
            minifyEnabled false // disable proguard
            ...
        }
    }
}
-keep public class com.myapp.models.** {
  public protected private *;
}
-keep public class com.myapp.models.MyModel {
  public protected private *;
}

Send multiple attachments( images and PDFs) to gmail through intent

copy iconCopydownload iconDownload
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType("*/*");
                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE,true);
                startActivityForResult(Intent.createChooser(intent, "ChooseFile"), PICKFILE_RESULT_CODE);
Intent intent = new Intent();
            intent.setAction(Intent.ACTION_SEND_MULTIPLE);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra(Intent.EXTRA_EMAIL, subarray);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.setType("vnd.android.cursor.dir/email");
            ArrayList<Uri> uris=new ArrayList<Uri>();
            if (uriMap.size()!=0) {
                Iterator i= uriMap.entrySet().iterator();
                while(i.hasNext()){
                    Map.Entry mapElement = (Map.Entry) i.next();
                    uris.add((Uri)mapElement.getValue());
                }
                intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,uris);
            }
            intent.setPackage("com.google.android.gm");
            startActivityForResult(intent, 101);
-----------------------
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType("*/*");
                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE,true);
                startActivityForResult(Intent.createChooser(intent, "ChooseFile"), PICKFILE_RESULT_CODE);
Intent intent = new Intent();
            intent.setAction(Intent.ACTION_SEND_MULTIPLE);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra(Intent.EXTRA_EMAIL, subarray);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.setType("vnd.android.cursor.dir/email");
            ArrayList<Uri> uris=new ArrayList<Uri>();
            if (uriMap.size()!=0) {
                Iterator i= uriMap.entrySet().iterator();
                while(i.hasNext()){
                    Map.Entry mapElement = (Map.Entry) i.next();
                    uris.add((Uri)mapElement.getValue());
                }
                intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,uris);
            }
            intent.setPackage("com.google.android.gm");
            startActivityForResult(intent, 101);

how to put taken image in specific image view

copy iconCopydownload iconDownload
   capturedImageButton.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent photoCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(photoCaptureIntent, 100);
            }
        });

  capturedImageButton1.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent photoCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(photoCaptureIntent, 101);
            }
        });


  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_OK){
            switch (this.resultCode){
                 case 100:
                    Bitmap bitmap = (Bitmap)data.getExtras().get("data");
                    capturedImageButton.setImageBitmap(bitmap);
                    break;

                case 101:
                    Bitmap bitmap = (Bitmap)data.getExtras().get("data");
                    capturedImageButton1.setImageBitmap(bitmap);
                    break;

               default:
                  break;
            }

        }
    }

Image is displaying in only 1st item in gridview

copy iconCopydownload iconDownload
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/iv_gridimg"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:padding="40dp"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:src="@drawable/ic_camera_black_24dp"/>
</RelativeLayout>
-----------------------
public class GridImgAdapter extends BaseAdapter {
HashMap<Integer, Bitmap> images = new HashMap<>();

    public void putImage(int position, Bitmap bitmap) {
        images.put(position, bitmap);
        notifyDataSetChanged()
    }

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View gv_gridimg;
    gv_gridimg = layoutInflater.inflate(R.layout.item_grid_img,null);
    ImageView iv_gridimg = (ImageView) gv_gridimg.findViewById(R.id.iv_gridimg);
       if(images.get(position)!=null) iv_gridimg.setImageBitmap(images.get(position);
    return gv_gridimg;
}
   ...
 int selectedPosition;
 gv_gridimg.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    selectedPosition=position;
     @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {


        if (resultCode != RESULT_CANCELED) {
            switch (requestCode) {
                case 0:
                    if (resultCode == RESULT_OK && data != null) {
                        Bitmap selectedImage = (Bitmap) data.getExtras().get("data");
                        //call adapter putImage method

                    }
                    break;
                case 1:
                    if (resultCode == RESULT_OK && data != null) {
                        Uri selectedImage = data.getData();
                        String[] filePathColumn = new String[]{MediaStore.Images.Media.DATA};
                        if (selectedImage != null) {
                            Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
                            if (cursor != null) {
                                cursor.moveToFirst();
                                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                                String picturesPath = cursor.getString(columnIndex);
                                //call adapter putImage method

                            }
                        }
                    }
                    break;
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
-----------------------
public class GridImgAdapter extends BaseAdapter {
HashMap<Integer, Bitmap> images = new HashMap<>();

    public void putImage(int position, Bitmap bitmap) {
        images.put(position, bitmap);
        notifyDataSetChanged()
    }

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View gv_gridimg;
    gv_gridimg = layoutInflater.inflate(R.layout.item_grid_img,null);
    ImageView iv_gridimg = (ImageView) gv_gridimg.findViewById(R.id.iv_gridimg);
       if(images.get(position)!=null) iv_gridimg.setImageBitmap(images.get(position);
    return gv_gridimg;
}
   ...
 int selectedPosition;
 gv_gridimg.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    selectedPosition=position;
     @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {


        if (resultCode != RESULT_CANCELED) {
            switch (requestCode) {
                case 0:
                    if (resultCode == RESULT_OK && data != null) {
                        Bitmap selectedImage = (Bitmap) data.getExtras().get("data");
                        //call adapter putImage method

                    }
                    break;
                case 1:
                    if (resultCode == RESULT_OK && data != null) {
                        Uri selectedImage = data.getData();
                        String[] filePathColumn = new String[]{MediaStore.Images.Media.DATA};
                        if (selectedImage != null) {
                            Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
                            if (cursor != null) {
                                cursor.moveToFirst();
                                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                                String picturesPath = cursor.getString(columnIndex);
                                //call adapter putImage method

                            }
                        }
                    }
                    break;
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
-----------------------
public class GridImgAdapter extends BaseAdapter {
HashMap<Integer, Bitmap> images = new HashMap<>();

    public void putImage(int position, Bitmap bitmap) {
        images.put(position, bitmap);
        notifyDataSetChanged()
    }

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View gv_gridimg;
    gv_gridimg = layoutInflater.inflate(R.layout.item_grid_img,null);
    ImageView iv_gridimg = (ImageView) gv_gridimg.findViewById(R.id.iv_gridimg);
       if(images.get(position)!=null) iv_gridimg.setImageBitmap(images.get(position);
    return gv_gridimg;
}
   ...
 int selectedPosition;
 gv_gridimg.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    selectedPosition=position;
     @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {


        if (resultCode != RESULT_CANCELED) {
            switch (requestCode) {
                case 0:
                    if (resultCode == RESULT_OK && data != null) {
                        Bitmap selectedImage = (Bitmap) data.getExtras().get("data");
                        //call adapter putImage method

                    }
                    break;
                case 1:
                    if (resultCode == RESULT_OK && data != null) {
                        Uri selectedImage = data.getData();
                        String[] filePathColumn = new String[]{MediaStore.Images.Media.DATA};
                        if (selectedImage != null) {
                            Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
                            if (cursor != null) {
                                cursor.moveToFirst();
                                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                                String picturesPath = cursor.getString(columnIndex);
                                //call adapter putImage method

                            }
                        }
                    }
                    break;
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

Community Discussions

Trending Discussions on easypermissions
  • No signature of method: build_1upy3e43ytufmh38cj8qq5tbo.android() is applicable for argument types: (build_1upy3e43ytufmh38cj8qq5tbo$_run_closure1)
  • Error when selecting 1 image from Intent Multiple
  • Navgraph direction build fail
  • Android studio how to fix android failed linking failure
  • Android - problem with Google API and Youtube Data v3
  • Easypermissions does not return to Method
  • Observer pattern is not working in Android MVVM
  • Google Oauth2 scope request for Drive API v3 doesn't work
  • Optional insert into database?
  • Bugs and Crashes on my App Release Version
Trending Discussions on easypermissions

QUESTION

No signature of method: build_1upy3e43ytufmh38cj8qq5tbo.android() is applicable for argument types: (build_1upy3e43ytufmh38cj8qq5tbo$_run_closure1)

Asked 2022-Feb-23 at 14:23

I have an error while building gradle in build.gradle(app) and spent several hours finding solution :

No signature of method: build_1upy3e43ytufmh38cj8qq5tbo.android() is applicable for argument types: (build_1upy3e43ytufmh38cj8qq5tbo$_run_closure1) values: [build_1upy3e43ytufmh38cj8qq5tbo$_run_closure1@6871bd16]

my build.gradle(app) file is:



android {
    packagingOptions {
        resources {
            excludes += ['AndroidManifest.xml']
        }
    }


    compileSdkVersion 31
    defaultConfig {
        applicationId "app.code.example"
        minSdkVersion 16
        targetSdkVersion 31
        versionCode 646
        versionName "5.0.1"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
        android.defaultConfig.vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //signingConfig signingConfigs.release
        }
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    dexOptions {
        incremental true
    }
    lint {
        checkReleaseBuilds false
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //noinspection GradleCompatible
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.6.0-alpha02'

    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'com.google.firebase:firebase-ads:20.5.0'

    testImplementation 'junit:junit:4.13'
    androidTestImplementation 'androidx.test:runner:1.4.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    implementation 'com.google.firebase:firebase-core:20.1.0'
    implementation 'com.google.firebase:firebase-auth:21.0.1'
    implementation 'com.google.firebase:firebase-database:20.0.3'
    //implementation 'org.jetbrains:annotations-java5:15.0'
    implementation 'androidx.gridlayout:gridlayout:1.0.0'
    implementation 'de.hdodenhof:circleimageview:3.1.0'
    implementation 'androidx.recyclerview:recyclerview:1.2.1'
    implementation 'com.google.firebase:firebase-storage:20.0.0'
    implementation 'com.squareup.picasso:picasso:2.71828'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'com.github.bumptech.glide:glide:4.12.0'
    implementation 'com.google.android.gms:play-services-ads:20.5.0'
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
    implementation 'com.google.firebase:firebase-messaging:23.0.0'
    implementation 'com.google.firebase:firebase-iid:21.1.0'
    implementation 'com.github.HotBitmapGG:RingProgressBar:V1.2.3'
    implementation 'com.google.firebase:firebase-inappmessaging-display:20.1.1'
    implementation 'com.google.firebase:firebase-analytics:20.1.0'
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:26.1.0')
    // Declare the dependencies for the Dynamic Links and Analytics libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-dynamic-links'
    implementation 'com.github.dimorinny:floating-text-button:0.0.4'
    //implementation 'com.facebook.android:audience-network-sdk:5.1.0'
    //implementation 'com.facebook.android:facebook-android-sdk:4.42.0'
    //implementation project(path: ':sinch-android-rtc-3.17.4')
    //implementation(name:'sinch-android-rtc' , version :'3.17.4' , ext:'aar')
    implementation 'com.facebook.android:facebook-share:7.1.0'
    implementation 'com.facebook.android:facebook-applinks:7.1.0'
    implementation 'com.facebook.android:facebook-login:8.1.0'
    implementation 'com.facebook.android:facebook-android-sdk:4.42.0'
    implementation 'com.facebook.android:audience-network-sdk:5.10.0'
    implementation 'com.google.firebase:firebase-firestore:24.0.1'
    implementation 'com.google.firebase:firebase-crashlytics:18.2.8'
    implementation 'com.android.billingclient:billing:4.0.0'
    implementation 'com.google.android.play:core:1.10.3'
    implementation 'com.github.Jay-Goo:RangeSeekBar:v3.0.0'
    implementation 'org.florescu.android.rangeseekbar:rangeseekbar-library:0.4.0'
    implementation 'me.bendik.simplerangeview:simplerangeview:0.2.0'
    implementation 'com.github.iwgang:countdownview:2.1.6'
    implementation 'com.airbnb.android:lottie:3.6.1'
    implementation 'com.hbb20:ccp:2.4.4'
    // FirebaseUI for Cloud Firestore
    implementation 'com.firebaseui:firebase-ui-firestore:7.1.1'
    // FirebaseUI for Firebase Realtime Database
    implementation 'com.firebaseui:firebase-ui-database:7.1.1'
    implementation 'android.arch.paging:runtime:1.1.1'

    implementation 'com.opentok.android:opentok-android-sdk:2.18.1'
    implementation 'pub.devrel:easypermissions:3.0.0'
    implementation 'com.android.volley:volley:1.2.1'
    implementation 'com.cloudrail:cloudrail-si-android:2.6.5'

    implementation "androidx.multidex:multidex:2.0.1"
    implementation "org.florescu.android.rangeseekbar:rangeseekbar-library:0.4.0"

    implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.15'

    

}

apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'

Can anyone help me find solution? Thanks

ANSWER

Answered 2022-Feb-23 at 14:23

I found the solution is removing:

dexOptions {
    incremental true
}
lint {
    checkReleaseBuilds false
}

Source https://stackoverflow.com/questions/71211807

Community Discussions, Code Snippets contain sources that include Stack Exchange Network

Vulnerabilities

No vulnerabilities reported

Install easypermissions

EasyPermissions is installed by adding the following dependency to your build.gradle file:.

Support

For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .

DOWNLOAD this Library from

Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

Explore Related Topics

Share this Page

share link
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

  • © 2022 Open Weaver Inc.