相关疑难解决方法(0)

Android M Permissions:onRequestPermissionsResult()未被调用

我正在更新我们的应用程序以使用新的M权限系统.除了onRequestPermissionsResult()之外,它都在工作.我需要在按下按钮时检查权限,如果成功,则发送短信.当我授予这样做的权限时,对话框会关闭,但在我再次按下按钮之前它不会触发发送文本.

我已经在onRequestPermissionsResult()方法中调试并设置了断点,但它从未进入过它.

首先调用此方法:

    private void askForPermission() {
    String[] permissions = new String[]{Manifest.permission.SEND_SMS};
    ActivityCompat.requestPermissions(getActivity(), permissions, PERMISSIONS_CODE);
}
Run Code Online (Sandbox Code Playgroud)

然后我的回调看起来像这样:

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

    if (requestCode == PERMISSIONS_CODE) {
        for (int i = 0; i < permissions.length; i++) {
            String permission = permissions[i];
            int grantResult = grantResults[i];

            if (permission.equals(Manifest.permission.SEND_SMS)) {
                if (grantResult == PackageManager.PERMISSION_GRANTED) {
                    onPPSButtonPress();
                } else {
                    requestPermissions(new String[]{Manifest.permission.SEND_SMS}, PERMISSIONS_CODE);
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过类似的问题?感谢任何帮助.谢谢

java permissions android android-permissions

280
推荐指数
15
解决办法
14万
查看次数

Android 6.0多重权限

我知道Android 6.0有新的权限,我知道我可以用这样的东西来调用它们

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
    PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this,
        new String[] { 
            Manifest.permission.WRITE_EXTERNAL_STORAGE
        }, PERMISSION_WRITE_STORAGE);
}
Run Code Online (Sandbox Code Playgroud)

今天我看到了一个需要3个权限的Google应用:联系人,短信和相机.它正在制作第1-3页并同时将它们全部调用以激活.

任何人都可以告诉我如何调用4个权限同时激活短信,相机,联系人和存储?

示例(忘记了谷歌应用程序的名称:()
该应用程序需要短信,联系人和相机

应用程序问我(并进行了对话框1-3)激活短信,激活联系人,然后是相机.所以这个谷歌应用程序一起调用所有3个必需的权限,我的问题是我怎么能得到相同的?

java permissions android android-permissions android-6.0-marshmallow

147
推荐指数
10
解决办法
14万
查看次数

从v4.Fragment请求运行时权限并将回调转到Fragment?

我有一个引起冲突的奇怪问题.我不得不切换到原Fragments生来修复它,但有一些错误.

我原来的问题:我有一个导航抽屉设置v4 Fragments.要在我的一个片段中请求许可我打电话ActivityCompat.requestPermissions(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION, 1);提示显示正常,但是当我接受或拒绝许可时,没有任何反应.onRequestPermissionsResult()永远不会调用回调.相反,它会在我的片段附加到的Activity中调用.对我来说没用,我需要回调才能在Fragment中工作.

考虑到这一点,我被告知我需要使用FragmentCompat,但这只能使用native Fragments (v13+),所以我改变了导航抽屉,使用原生Fragments而不是v4支持库Fragments.但是,因为我正在使用AppCompatActivity,所以某些东西不起作用,比如addToBackStack()回到之前的片段.

长话短说,有谁知道我怎么可以使用v4.Fragment并仍然要求获得许可Fragment并获得回调Fragment?我觉得这是Android中的一个错误,但尚未解决,但我不是100%.

让我知道如果你需要查看我的代码,它只是运行时权限所需的标准方法,我想使用v4 Fragments,虽然这不符合我的理解.

java android android-fragments android-6.0-marshmallow

57
推荐指数
5
解决办法
4万
查看次数

onRequestPermissionsResult 在片段中不起作用

我正在尝试实现 Marshmallow 的权限支持,但我在“onRequestPermissionsResult”中的代码从未被调用。

在 Activity 中工作时,它的工作正常但在片段中我遇到了问题,即控件没有进入 onRequestPermissionsResult()

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                            mCheckPermission();
                        }
Run Code Online (Sandbox Code Playgroud)

在 mCheckPermission() 中:-

public void mCheckPermission() {
        if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(getActivity(),
                Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
                    PERMISSION_REQUEST_COARSE_LOCATION );

        }
    }
Run Code Online (Sandbox Code Playgroud)

对话框弹出 2 个按钮。拒绝和允许。单击按钮时,控件未进入 onRequestPermissionCheck();

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

        switch (requestCode){
            case PERMISSION_REQUEST_COARSE_LOCATION: {
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    Toast.makeText(getActivity(), "permission granted", Toast.LENGTH_LONG).show();
                    //call your action

                } …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-runtime runtime-permissions

14
推荐指数
1
解决办法
6583
查看次数

android请求运行时调用操作的权限

我有调用操作的代码,我需要最好的方式来声明运行时权限我尝试了很多代码,但我总是得到错误

这是我的基本代码任何建议,使其与运行时权限一起工作,提前感谢

public class MainActivity extends Activity {

private Button button;
private EditText etPhoneno;

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = (Button) findViewById(R.id.buttonCall);
    etPhoneno = (EditText) findViewById(R.id.editText1);
    // add button listener
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
                String phnum = etPhoneno.getText().toString();
                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:" + phnum));
                startActivity(callIntent);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

}

java permissions android runtime

1
推荐指数
1
解决办法
2万
查看次数