Code Monkey home page Code Monkey logo

Comments (5)

giacomomasseron avatar giacomomasseron commented on May 24, 2024

I saw the problem is with "WRITE_EXTERNAL_STORAGE" permission.
The same code works with "RECORD_AUDIO" permission.

This is the manifest file:

<uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        android:maxSdkVersion="18" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

I do not know if it helps for knowing why dialog is not shown.

from permissionutils.

raphaelbussa avatar raphaelbussa commented on May 24, 2024

Can you post the complete implementation?

from permissionutils.

giacomomasseron avatar giacomomasseron commented on May 24, 2024

I have this Activity:

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

import java.util.ArrayList;

import rebus.permissionutils.AskAgainCallback;
import rebus.permissionutils.FullCallback;
import rebus.permissionutils.PermissionEnum;
import rebus.permissionutils.PermissionManager;

public class PermissionCheckerActivity extends BaseActivity implements FullCallback {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_permission_checker);
        int[] ids = getIntent().getIntArrayExtra("permissions");
        PermissionEnum[] permissions = new PermissionEnum[ids.length];
        for (int i = 0; i < ids.length; i++) {
            permissions[i] = PermissionEnum.values()[ids[i]];
        }

        PermissionManager.Builder()
                .permission(permissions)
                .askAgain(true)
                .askAgainCallback(new AskAgainCallback() {
                    @Override
                    public void showRequestPermission(AskAgainCallback.UserResponse response) {
                        showDialog(response);
                    }
                })
                .callback(new FullCallback() {
                    @Override
                    public void result(ArrayList<PermissionEnum> permissionsGranted, ArrayList<PermissionEnum> permissionsDenied, ArrayList<PermissionEnum> permissionsDeniedForever, ArrayList<PermissionEnum> permissionsAsked) {
                        finish();
                    }
                })
                .ask(this);
    }

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

    @Override
    public void result(ArrayList<PermissionEnum> permissionsGranted, ArrayList<PermissionEnum> permissionsDenied, ArrayList<PermissionEnum> permissionsDeniedForever, ArrayList<PermissionEnum> permissionsAsked) {

    }

    private void showDialog(final AskAgainCallback.UserResponse response) {
        new AlertDialog.Builder(this)
                .setTitle("Permission needed")
                .setMessage("This app really need to use this permission, you wont to authorize it?")
                .setPositiveButton("OK", (dialogInterface, i) -> response.result(true))
                .setNegativeButton("NOT NOW", (dialogInterface, i) -> response.result(false))
                .show();
    }
}

I call it with this code:

Intent intent = new Intent(context, PermissionCheckerActivity.class);
int[] permissionsIDs = new int[permissions.length];
for (int i = 0; i < permissionsIDs.length; i++) {
    permissionsIDs[i] = permissions[i].ordinal();
}
intent.putExtra("permissions", permissionsIDs);
launcher.launchActivity(intent);

This is the interface for launchActivity:

private interface ActivityLauncher {
    void launchActivity(Intent intent);
}

LaunchActivity just does this:

activity.startActivityForResult(intent, requestCode)

from permissionutils.

giacomomasseron avatar giacomomasseron commented on May 24, 2024

I guess the problem was there:

<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="18" />

I removed "andoid:maxSdkVersion" attribute and it works.

from permissionutils.

raphaelbussa avatar raphaelbussa commented on May 24, 2024

OK perfect

from permissionutils.

Related Issues (14)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.