diff --git a/README.md b/README.md index 9ecc472..bc7c93d 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ Gradle ------ ```java dependencies { - compile 'com.greysonparrelli.permiso:permiso:0.1.0' + compile 'com.greysonparrelli.permiso:permiso:0.1.1' } ``` @@ -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: @@ -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); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 97b9b04..c985d64 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,6 +23,11 @@ + + diff --git a/app/src/main/java/com/greysonparrelli/permisodemo/MainActivity.java b/app/src/main/java/com/greysonparrelli/permisodemo/MainActivity.java index a2feef4..dfad5f1 100644 --- a/app/src/main/java/com/greysonparrelli/permisodemo/MainActivity.java +++ b/app/src/main/java/com/greysonparrelli/permisodemo/MainActivity.java @@ -1,9 +1,8 @@ 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; @@ -11,11 +10,12 @@ 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 // ===================================================================== @@ -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(); + } + }); } @@ -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)); + } } diff --git a/app/src/main/java/com/greysonparrelli/permisodemo/NonPermisoActivity.java b/app/src/main/java/com/greysonparrelli/permisodemo/NonPermisoActivity.java new file mode 100644 index 0000000..9db92ba --- /dev/null +++ b/app/src/main/java/com/greysonparrelli/permisodemo/NonPermisoActivity.java @@ -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); + } + +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 18aad76..ae580eb 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -26,4 +26,10 @@ android:layout_height="wrap_content" android:text="Request Duplicate Permissions"/> +