Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/k0shk0sh/PermissionHelper
Android Library to help you with your runtime Permissions.
https://github.com/k0shk0sh/PermissionHelper
Last synced: 3 months ago
JSON representation
Android Library to help you with your runtime Permissions.
- Host: GitHub
- URL: https://github.com/k0shk0sh/PermissionHelper
- Owner: k0shk0sh
- License: apache-2.0
- Created: 2015-11-14T07:42:16.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-10-01T11:54:22.000Z (about 6 years ago)
- Last Synced: 2024-05-02T00:54:20.003Z (6 months ago)
- Language: Java
- Homepage: http://k0shk0sh.github.io/PermissionHelper/
- Size: 1.78 MB
- Stars: 1,228
- Watchers: 45
- Forks: 228
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PermissionHelper
Android Library to help you with your runtime Permissions.Demo
======**Android M** Watch it in action.
**Pre M** Watch it in action.
Nexus 6 (M)
=======
![Nexus 6](https://raw.github.com/k0shk0sh/PermissionHelper/master/art/nexus6.jpg)Nexus 7 (L)
=======
![ScreenShot](https://raw.github.com/k0shk0sh/PermissionHelper/master/art/nexus7.jpg)Nexus 10 (L)
=======
![ScreenShot](https://raw.github.com/k0shk0sh/PermissionHelper/master/art/nexus10.jpg)# Installation
#### Gradle
```groovy
compile 'com.github.k0shk0sh:PermissionHelper:1.1.0'
```#### Maven
```xmlcom.github.k0shk0sh
PermissionHelper
1.1.0
aar```
Usage
=====# Ask Permissions in Style
_Have you wondered what will give you a higher chance of letting the user accepts your permission?_
>The answer is simple: **(Educating UI)** that explains why you need to use that particular `permission`.
* All you need to do is extending BasePermissionActivity.
* By extending `BasePermissionActivity` you'll have control over (**Features**):
* Permissions that being asked and their Explanation if its needed.
* Each `Screen` Background color (`DarkPrimaryColor` of that background will be generated automatically).
* Each `Screen` Image Resource.
* Each `Screen` Title & Message.
* Each `Screen` Title & Message Text Color.
* Each `Screen` Title & Message Text Size.
* Each `Screen` Text & Message `FontType`, yes you heard me right, each `Screen` can have their own `FontType`.
* Each `Screen` Next, Previous & Request Buttons Icon Resources.
* Your Own `Theme`.
* Your Own Implementation of `ViewPager.PageTransformer` or use the default one.
* You can defined for instance that a particular permission can't be skipped until the Explanation `Dialog` is showed.(follow example code below
to know
how).
* `BasePermissionActivity` support Portrait & Landscape modes for both Mobile Phones & Tablets _(as showing in above images)_.
* `SYSTEM_ALERT_WINDOW Permission` is being automatically handled if you ever pass it along other permissions ;) .
* And Finally **Let The Library Do The Job For You. in Style.****Notice**
> You still can use the library to explain why you used the permission in your app, the library will never try ask the permission if
Android is smaller than **M**, it will just do like any Intro library does. as you can see in **Nexus 7 & Nexus 10** screens running Android **L**,
request button is hidden ;).> For Better Understanding, please have a look at the example code at SamplePagerActivity
# Take Control.
Your ```Activity/Fragment/Presenter``` should implement ```OnPermissionCallback``` which in return will give you access to
```java
void onPermissionGranted(String[] permissionName);void onPermissionDeclined(String[] permissionName);
void onPermissionPreGranted(String permissionsName);
void onPermissionNeedExplanation(String permissionName);
void onPermissionReallyDeclined(String permissionName);//user has ticked don't show again and deny the permissionvoid onNoPermissionNeeded(); // fallback to api < M
```to request a permission all you have to do is:
- Activity
```java
permissionHelper
.setForceAccepting(false)// true if you had like force reshowing the permission dialog on Deny (not recommended)
.request(isSingle ? SINGLE_PERMISSION : MULTIPLE_PERMISSIONS);
```- Fragment
```java
permissionFragmentHelper
.setForceAccepting(false)// true if you had like force reshowing the permission dialog on Deny (not recommended)
.request(isSingle ? SINGLE_PERMISSION : MULTIPLE_PERMISSIONS);
```To request a permission without ask for explanation message even if the user press decline:
```java
permissionHelper
.setSkipExplanation(true)// true if you don't want to show expalanation message
.request(CAMERA_PERMISSION);and finally in your `Activity/Fragment`
```java
onRequestPermissionsResult(....)
```
call
```java
permissionHelper.onRequestPermissionsResult(....)
```# Extra Activity/Fragment
* Depends on whether you using `PermissionHelper` or `PermissionFragmentHelper` you can call these methods
```java
public static String declinedPermission(@NonNull Context/Fragment context, @NonNull String[])
``````java
public static String[] declinedPermissions(@NonNull Context/Fragment context, @NonNull String[] permissions)
``````java
public static boolean isPermissionGranted(@NonNull Context/Fragment context, @NonNull String permission)
``````java
public static boolean isPermissionDeclined(@NonNull Context/Fragment context, @NonNull String permission)
``````java
public static boolean isExplanationNeeded(@NonNull Activity/Fragment context, @NonNull String permissionName)
``````java
public static boolean permissionExists(@NonNull Context/Fragment context, @NonNull String permissionName)
``````java
public static boolean isPermissionPermanentlyDenied(@NonNull Activity/Fragment context, @NonNull String permission)
``````java
public static void openSettingsScreen(Context/Fragment context)//useful when we can't request for the permission due to user ticked don't show again.
``````java
@TargetApi(Build.VERSION_CODES.M)
public static boolean isSystemAlertGranted(@NonNull Context/Fragment context)// special case for SYSTEM_ALERT_WINDOW permission.
```> all of the above static methods you can still access them with PermissionHelper or PermissionFragmentHelper instance.
* To understand more how taking control would look like please go through the
- `Activity` `SampleActivity`
- `Fragment` `SampleFragment`# Why this library?
* Its simple to use.
* Its Unique, Customizable & read back first point.
* You have two choices, do it your way through `callbacks`, or let the `Library` do it for you with your look & Feel.
* Minimum API is 14, but it'll probably work in API 11 and above, just make sure you test it out.> If you're using this library drop me an email at [email protected] to include in the list.
# Dependency
Android Support library ``v24.2.1``
CirclePageIndicator by **JakeWharton** (integrated within the library).
# Images
Images used inside the demo are by Maximilian Keppeler
# Copyright Notice
Copyright (C) 2015 Kosh.
Licensed under the [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0)
license (see the LICENSE file).