Skip to content

Commit

Permalink
Fixed #1, fixed issue when switching activities.
Browse files Browse the repository at this point in the history
  • Loading branch information
greysonp committed Nov 24, 2015
1 parent 7e3b16e commit 913c772
Show file tree
Hide file tree
Showing 9 changed files with 141 additions and 31 deletions.
10 changes: 8 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ Gradle
------
```java
dependencies {
compile 'com.greysonparrelli.permiso:permiso:0.1.0'
compile 'com.greysonparrelli.permiso:permiso:0.1.1'
}
```

Expand All @@ -71,7 +71,7 @@ FAQ

Of course not! Permiso requires very little boilerplate, and therefore ```PermisoActivity``` does very little. If you don't want to subclass ```PermisoActivity```, all you have to do is make sure you do the two following things:

* In ```onCreate()```, invoke ```Permiso.getInstance().setActivity(this)```.
* In ```onCreate()``` and ```onResume()```, invoke ```Permiso.getInstance().setActivity(this)```.
* Forward the results of ```Activity.onRequestPermissionsResult()``` to ```Permiso.getInstance().onRequestPermissionResult()```.

Here's an example:
Expand All @@ -83,6 +83,12 @@ protected void onCreate(Bundle savedInstanceState) {
Permiso.getInstance().setActivity(this);
}

@Override
protected void onResume() {
super.onResume();
Permiso.getInstance().setActivity(this);
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

<activity
android:name=".NonPermisoActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar" />
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
package com.greysonparrelli.permisodemo;

import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

import com.greysonparrelli.permiso.Permiso;
import com.greysonparrelli.permiso.PermisoActivity;

/**
* An activity that demonstrates the features of {@link Permiso}.
* An activity that demonstrates the features of {@link Permiso}. This activity extends {@link PermisoActivity} in order
* to handle some boilerplate. If you don't want to extend {@link PermisoActivity}, check out
* {@link NonPermisoActivity}.
*/
public class MainActivity extends PermisoActivity {


// =====================================================================
// Overrides
// =====================================================================
Expand Down Expand Up @@ -44,6 +44,12 @@ public void onClick(View v) {
onDuplicateClick();
}
});
findViewById(R.id.btn_non_permiso).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onNonPermisoClick();
}
});
}


Expand Down Expand Up @@ -137,4 +143,11 @@ public void onRationaleRequested(Permiso.IOnRationaleProvided callback, String..
}
}, Manifest.permission.CAMERA);
}

/**
* Starts {@link NonPermisoActivity}.
*/
private void onNonPermisoClick() {
startActivity(new Intent(this, NonPermisoActivity.class));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.greysonparrelli.permisodemo;

import android.Manifest;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

import com.greysonparrelli.permiso.Permiso;

/**
* Created to demonstrate how to use Permiso without extending PermisoActivity.
*/
public class NonPermisoActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_non_permiso);

//
// First, tell Permiso that you're using this activity
//
Permiso.getInstance().setActivity(this);

findViewById(R.id.btn_request).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onRequestClick();
}
});
}

@Override
protected void onResume() {
super.onResume();

//
// Second, we also have to set the activity here to handle transitioning between activities
//
Permiso.getInstance().setActivity(this);
}

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

//
// Third, forward the results of this method to Permiso
//
Permiso.getInstance().onRequestPermissionResult(requestCode, permissions, grantResults);
}

private void onRequestClick() {
//
// And that's it! Now you can make permission requests as usual
//
Permiso.getInstance().requestPermissions(new Permiso.IOnPermissionResult() {
@Override
public void onPermissionResult(Permiso.ResultSet resultSet) {
if (resultSet.areAllPermissionsGranted()) {
Toast.makeText(NonPermisoActivity.this, "Permission Granted!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(NonPermisoActivity.this, "Permission Denied.", Toast.LENGTH_SHORT).show();
}
}

@Override
public void onRationaleRequested(Permiso.IOnRationaleProvided callback, String... permissions) {
Permiso.getInstance().showRationaleInDialog("Permission Rationale", "Needed for demo purposes.", null, callback);
}
}, Manifest.permission.READ_EXTERNAL_STORAGE);
}

}
6 changes: 6 additions & 0 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,10 @@
android:layout_height="wrap_content"
android:text="Request Duplicate Permissions"/>

<Button
android:id="@+id/btn_non_permiso"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Open Non-PermisoActivity Example"/>

</LinearLayout>
17 changes: 17 additions & 0 deletions app/src/main/res/layout/activity_non_permiso.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.greysonparrelli.permisodemo.MainActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center">

<Button
android:id="@+id/btn_request"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Request a Permission"/>

</LinearLayout>
20 changes: 0 additions & 20 deletions app/src/main/res/layout/content_main.xml

This file was deleted.

6 changes: 3 additions & 3 deletions permiso/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ ext {
libraryName = 'Permiso'
artifact = 'permiso'

libraryDescription = 'An Android library that makes dealing with the Android Marshmallow permission system a bit easier.'
libraryDescription = 'An Android library to make handling runtime permissions a whole lot easier.'

siteUrl = 'https://github.com/greysonp/permiso'
gitUrl = 'https://github.com/greysonp/permiso.git'

libraryVersion = '0.1.0'
libraryVersion = '0.1.1'

developerId = 'greysonp'
developerName = 'Greyson Parrelli'
Expand Down Expand Up @@ -45,7 +45,7 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:appcompat-v7:23.1.1'
}

// Only add in the bintray stuff if we're building locally
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;

/**
* An Activity that handles the small amount of boilerplate that {@link Permiso} requires to run. If you'd rather not
* use this as your base activity class, simply remember to do the following in each of your activities:
* <ul>
* <li>Call {@link Permiso#setActivity(Activity)} in {@link Activity#onCreate(Bundle)}</li>
* <li>Call {@link Permiso#setActivity(Activity)} in {@link Activity#onCreate(Bundle)} and {@link Activity#onResume()}</li>
* <li>Call {@link Permiso#onRequestPermissionResult(int, String[], int[])} in
* {@link Activity#onRequestPermissionsResult(int, String[], int[])}</li>
* </ul>
Expand All @@ -22,7 +23,13 @@ protected void onCreate(Bundle savedInstanceState) {
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
protected void onResume() {
super.onResume();
Permiso.getInstance().setActivity(this);
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Permiso.getInstance().onRequestPermissionResult(requestCode, permissions, grantResults);
}
Expand Down

0 comments on commit 913c772

Please sign in to comment.