Skip to content

Commit 913c772

Browse files
committed
Fixed #1, fixed issue when switching activities.
1 parent 7e3b16e commit 913c772

File tree

9 files changed

+141
-31
lines changed

9 files changed

+141
-31
lines changed

README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Gradle
6161
------
6262
```java
6363
dependencies {
64-
compile 'com.greysonparrelli.permiso:permiso:0.1.0'
64+
compile 'com.greysonparrelli.permiso:permiso:0.1.1'
6565
}
6666
```
6767

@@ -71,7 +71,7 @@ FAQ
7171

7272
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:
7373

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

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

86+
@Override
87+
protected void onResume() {
88+
super.onResume();
89+
Permiso.getInstance().setActivity(this);
90+
}
91+
8692
@Override
8793
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
8894
super.onRequestPermissionsResult(requestCode, permissions, grantResults);

app/src/main/AndroidManifest.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323
<category android:name="android.intent.category.LAUNCHER"/>
2424
</intent-filter>
2525
</activity>
26+
27+
<activity
28+
android:name=".NonPermisoActivity"
29+
android:label="@string/app_name"
30+
android:theme="@style/AppTheme.NoActionBar" />
2631
</application>
2732

2833
</manifest>

app/src/main/java/com/greysonparrelli/permisodemo/MainActivity.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
package com.greysonparrelli.permisodemo;
22

33
import android.Manifest;
4+
import android.content.Intent;
45
import android.os.Bundle;
5-
import android.support.annotation.NonNull;
6-
import android.support.v7.app.AppCompatActivity;
76
import android.view.View;
87
import android.widget.Toast;
98

109
import com.greysonparrelli.permiso.Permiso;
1110
import com.greysonparrelli.permiso.PermisoActivity;
1211

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

18-
1919
// =====================================================================
2020
// Overrides
2121
// =====================================================================
@@ -44,6 +44,12 @@ public void onClick(View v) {
4444
onDuplicateClick();
4545
}
4646
});
47+
findViewById(R.id.btn_non_permiso).setOnClickListener(new View.OnClickListener() {
48+
@Override
49+
public void onClick(View v) {
50+
onNonPermisoClick();
51+
}
52+
});
4753
}
4854

4955

@@ -137,4 +143,11 @@ public void onRationaleRequested(Permiso.IOnRationaleProvided callback, String..
137143
}
138144
}, Manifest.permission.CAMERA);
139145
}
146+
147+
/**
148+
* Starts {@link NonPermisoActivity}.
149+
*/
150+
private void onNonPermisoClick() {
151+
startActivity(new Intent(this, NonPermisoActivity.class));
152+
}
140153
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.greysonparrelli.permisodemo;
2+
3+
import android.Manifest;
4+
import android.os.Bundle;
5+
import android.support.annotation.NonNull;
6+
import android.support.v7.app.AppCompatActivity;
7+
import android.view.View;
8+
import android.widget.Toast;
9+
10+
import com.greysonparrelli.permiso.Permiso;
11+
12+
/**
13+
* Created to demonstrate how to use Permiso without extending PermisoActivity.
14+
*/
15+
public class NonPermisoActivity extends AppCompatActivity {
16+
17+
@Override
18+
protected void onCreate(Bundle savedInstanceState) {
19+
super.onCreate(savedInstanceState);
20+
setContentView(R.layout.activity_non_permiso);
21+
22+
//
23+
// First, tell Permiso that you're using this activity
24+
//
25+
Permiso.getInstance().setActivity(this);
26+
27+
findViewById(R.id.btn_request).setOnClickListener(new View.OnClickListener() {
28+
@Override
29+
public void onClick(View v) {
30+
onRequestClick();
31+
}
32+
});
33+
}
34+
35+
@Override
36+
protected void onResume() {
37+
super.onResume();
38+
39+
//
40+
// Second, we also have to set the activity here to handle transitioning between activities
41+
//
42+
Permiso.getInstance().setActivity(this);
43+
}
44+
45+
@Override
46+
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
47+
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
48+
49+
//
50+
// Third, forward the results of this method to Permiso
51+
//
52+
Permiso.getInstance().onRequestPermissionResult(requestCode, permissions, grantResults);
53+
}
54+
55+
private void onRequestClick() {
56+
//
57+
// And that's it! Now you can make permission requests as usual
58+
//
59+
Permiso.getInstance().requestPermissions(new Permiso.IOnPermissionResult() {
60+
@Override
61+
public void onPermissionResult(Permiso.ResultSet resultSet) {
62+
if (resultSet.areAllPermissionsGranted()) {
63+
Toast.makeText(NonPermisoActivity.this, "Permission Granted!", Toast.LENGTH_SHORT).show();
64+
} else {
65+
Toast.makeText(NonPermisoActivity.this, "Permission Denied.", Toast.LENGTH_SHORT).show();
66+
}
67+
}
68+
69+
@Override
70+
public void onRationaleRequested(Permiso.IOnRationaleProvided callback, String... permissions) {
71+
Permiso.getInstance().showRationaleInDialog("Permission Rationale", "Needed for demo purposes.", null, callback);
72+
}
73+
}, Manifest.permission.READ_EXTERNAL_STORAGE);
74+
}
75+
76+
}

app/src/main/res/layout/activity_main.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,10 @@
2626
android:layout_height="wrap_content"
2727
android:text="Request Duplicate Permissions"/>
2828

29+
<Button
30+
android:id="@+id/btn_non_permiso"
31+
android:layout_width="match_parent"
32+
android:layout_height="wrap_content"
33+
android:text="Open Non-PermisoActivity Example"/>
34+
2935
</LinearLayout>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
xmlns:tools="http://schemas.android.com/tools"
5+
tools:context="com.greysonparrelli.permisodemo.MainActivity"
6+
android:layout_width="wrap_content"
7+
android:layout_height="wrap_content"
8+
android:orientation="vertical"
9+
android:layout_gravity="center">
10+
11+
<Button
12+
android:id="@+id/btn_request"
13+
android:layout_width="match_parent"
14+
android:layout_height="wrap_content"
15+
android:text="Request a Permission"/>
16+
17+
</LinearLayout>

app/src/main/res/layout/content_main.xml

Lines changed: 0 additions & 20 deletions
This file was deleted.

permiso/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ ext {
88
libraryName = 'Permiso'
99
artifact = 'permiso'
1010

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

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

16-
libraryVersion = '0.1.0'
16+
libraryVersion = '0.1.1'
1717

1818
developerId = 'greysonp'
1919
developerName = 'Greyson Parrelli'
@@ -45,7 +45,7 @@ android {
4545
dependencies {
4646
compile fileTree(dir: 'libs', include: ['*.jar'])
4747
testCompile 'junit:junit:4.12'
48-
compile 'com.android.support:appcompat-v7:23.1.0'
48+
compile 'com.android.support:appcompat-v7:23.1.1'
4949
}
5050

5151
// Only add in the bintray stuff if we're building locally

permiso/src/main/java/com/greysonparrelli/permiso/PermisoActivity.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22

33
import android.app.Activity;
44
import android.os.Bundle;
5+
import android.support.annotation.NonNull;
56
import android.support.v7.app.AppCompatActivity;
67

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

2425
@Override
25-
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
26+
protected void onResume() {
27+
super.onResume();
28+
Permiso.getInstance().setActivity(this);
29+
}
30+
31+
@Override
32+
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
2633
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
2734
Permiso.getInstance().onRequestPermissionResult(requestCode, permissions, grantResults);
2835
}

0 commit comments

Comments
 (0)