小编Dha*_*tel的帖子

onRequestPermissionsResult未在对话框片段中调用

我已经开始研究Android M运行时权限了.在这里,我面临的问题是,如果requestPermissionsDialog Fragment类中调用,则onRequestPermissionsResult不会在同一个Dialog fragment类中调用.但是如果requestPermissionsActivity类或FragmentonRequestPermissionsResult调用,则在同一个类中调用方法.

这是我的示例代码:

public class ContactPickerDialog extends DialogFragment {
    private static final int READ_CONTACTS_REQUEST_CODE = 12;
    private Context mContext;

    private void loadContact() {
        if(hasPermission(mContext, Manifest.permission.READ_CONTACTS)){
            new ContactSyncTask().execute();
        } else {
            this.requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, READ_CONTACTS_REQUEST_CODE);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        Logger.d("TAG", "dialog onRequestPermissionsResult");
        switch (requestCode) {
            case READ_CONTACTS_REQUEST_CODE:
                // Check Permissions Granted or not
                if (grantResults[0] == …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-dialogfragment android-6.0-marshmallow

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

Android SnackBar:错误膨胀SnackbarLayout

我想从Google提供的官方设计库中试用新的Snackbar.它的使用非常接近Toast所以我认为它很容易尝试.

我已经在运行5.1的模拟器以及运行5.0的三星Galaxy S6 Edge上尝试过.

我的问题是应用程序在应该显示Snackbar时崩溃.

package com.jayway.andreas.test;

import android.app.Activity;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.view.View;


public class MainActivity extends Activity {

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

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(v, R.string.test, Snackbar.LENGTH_LONG)
                        .setAction("Action!", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                // NOP
                            }
                        })
                        .show();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:id="@+id/root_layout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android android-layout snackbar android-design-library

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

如何在Android 4.4中以编程方式启用/禁用GPS?

Intent intent = new Intent("android.location.GPS_ENABLED_CHANGE");
intent.putExtra("enabled", true);
getBaseContext().sendBroadcast(intent);`
Run Code Online (Sandbox Code Playgroud)

我使用此代码启用GPS,但它给我这样的错误.

java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.location.GPS_ENABLED_CHANGE from pid=1208, uid=10051
Run Code Online (Sandbox Code Playgroud)

所以任何人都给我解决方案.

gps android

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

在android中使用Intent挑选PDF文件

嘿,我是 android 新手,我需要pdf使用 Intent. 我正在使用此代码来设置 MIME 类型。

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("pdf/*")
Run Code Online (Sandbox Code Playgroud)

但它没有按我想要的方式工作,请向我提供任何建议,或者我可以对现有代码进行一些更改。

android android-intent

3
推荐指数
1
解决办法
7560
查看次数

如何在DialogFragment中获取Permission结果回调?

这是我的代码示例.

public class DialogPermission extends DialogFragment {

    @Nullable
    @Override
    public View getView() {
        View root = LayoutInflater.from(getActivity()).inflate(R.layout.frg_dialog_permission, null, false);
        Button btnRead = (Button) root.findViewById(R.id.btn_read_contact_permission);
        btnRead.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED){
                    if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(),Manifest.permission.READ_CONTACTS)){
                    }else{
                      ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.READ_CONTACTS},101);}
                }
            }
        });
        return root;
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        Log.e("DialogPermission","Ho! Ho! Ho!");  // Log not printed
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

}
Run Code Online (Sandbox Code Playgroud)

我不希望在Activity中回调.我希望一切都清楚地解释.

android android-permissions

3
推荐指数
1
解决办法
5844
查看次数