当前位置: 首页 > 知识库问答 >
问题:

Android Studio:ActivityCompat.RequestPermissions显示无对话框

顾池暝
2023-03-14

测试电话上的应用程序设置中接受存储的所有权限。App已经被清除了两次数据,以及卸载和重新安装。

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion '25'

defaultConfig {
    applicationId "APPID"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.facebook.android:facebook-android-sdk:4.+'
compile 'com.android.support:appcompat-v7:23.4.0'
compile('com.affectiva.android:affdexsdk:3.1.2')

}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="PACKAGE NAME">

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:replace="android:allowBackup,android:label">
    <activity
        android:name=".LoginActivity"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name"/>
        <!--android:theme="@android:style/Theme.Translucent.NoTitleBar" -->

    <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id" />

    <activity
        android:name=".ProfileActivity"
        android:screenOrientation="portrait"></activity>
    <activity android:name=".QuestionOne"></activity>
</application>

最初在此称为:

    if(loggedIn && friendsNames.size() > 0) {

        try{

            verifyStoragePermissions(this);
        }
        catch(Exception e ){
            Log.e("LoginActv: Save Block", e.getMessage());
            e.getStackTrace();
        }

        Intent intent = new Intent(this, QuestionOne.class);
        intent.putStringArrayListExtra("names",friendsNames);
        intent.putStringArrayListExtra("urls", pictureURL);

        startActivity(intent);

当然这里需要权限。请注意“permissions!=1”vs“permissions!=PackageManager.Permission_Granted”,否则将不会运行到RequestPermissions中:

public static void verifyStoragePermissions(Activity activity) {
    // Check if we have write permission
    int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);

    Log.e("Permission value", permission + " ");
    if (permission != 1) {
        Log.e("Permission ask", "Asking, permission not granted");
        ActivityCompat.requestPermissions(
                activity,
                PERMISSIONS_STORAGE,
                REQUEST_EXTERNAL_STORAGE
        );
    }
}

权限变量如下:

// Storage Permissions
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
        Manifest.permission.READ_EXTERNAL_STORAGE,
        Manifest.permission.WRITE_EXTERNAL_STORAGE
};
@Override
public void onRequestPermissionsResult(int requestCode,  String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);


    if (requestCode == 200) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

            Log.e("PERResult", "Granted");
            resultExport file = new resultExport();
            file.setUserName(facebookHandler.getUserName());
            file.setUserID(facebookHandler.getUserID());
            file.addData("friendNames", friendsNames);
            saveObject(file, facebookHandler.getUserName());


        } else {
            Log.e("PERResult", "Denied");
            Toast.makeText(getApplicationContext(), "PERMISSION_DENIED", Toast.LENGTH_SHORT).show();
        }
    }
}
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
int permissionCheck = ContextCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
open failed: EACCES (Permission denied)

共有1个答案

许焕
2023-03-14

显然,它不需要对话框,因为有权限。但是,它抛出的权限被拒绝仅仅是因为路径错误。

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(Environment.getExternalStorageDirectory().getPath() + name + ".bin")));

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File(Environment.getExternalStorageDirectory().getPath()+ "/" + name + ".bin")));
 类似资料:
  • 在Netbeans中,我创建了一个GUI项目,该项目使用框架前端,我可以添加组件并双击以编辑其事件。我指的是有“源”、“设计”和“历史”选项卡的窗口。 以下是组件和关系: 1-打开文件选择器的按钮。 2-显示文件选择器结果的文本区域。如果用户选择一个文件,它将在文本区域显示文件名;否则它会写“被用户取消”。 3-同时,如果用户选择了一个文件,我想打开一个“please wait”(请等待)对话框,

  • 嗨,我是primefaces的新手,我对数据表中显示的值有一些问题。我从sql数据库加载数据,并在dataTable中显示这些数据。有一个柱子叫做“评论”,里面有一个按钮。如果你点击这个按钮,就会打开一个对话框。在这个对话框框架内,也应该有一些与我在dataTable中显示的相同的值,但它不起作用。我无法显示该对话框框中的值。我在谷歌上搜索了很多次,也尝试了很多次,但都无济于事。下面是xhtml:

  • 我在应用程序中使用“Android-Rate”库。当我尝试显示对话框时遇到问题。 当对话框打开时,里面有我放的句子,但我看不到下图中的按钮: 如您所见,文本显示但按钮未显示,就像按钮不可见一样,但如果您单击对话框的白色部分,它将打开App Store页面。 这是我的代码: 我还将此代码放在<code>Strings.xml</code>中: 你能帮我解决这个问题吗?

  • 本文向大家介绍如何使用JavaScript显示提示对话框?,包括了如何使用JavaScript显示提示对话框?的使用技巧和注意事项,需要的朋友参考一下 当您要弹出文本框以获取用户输入时,提示对话框非常有用。因此,它使您可以与用户进行交互。用户需要填写该字段,然后单击“确定”。 使用称为的方法显示此对话框,该方法带有两个参数:(i)您要在文本框中显示的标签,以及(ii)要在文本框中显示的默认字符串。

  • 我在对话框中遇到WebView的问题。我尝试过许多不同的技巧,但都没有奏效。所以,我的问题是我无法在自定义对话框中加载WebView。它打开对话框,不会给出任何错误,但对话框不会“填充”web视图。它只是显示一个对话框的标题。 AlertDialog.Builder确实在对话框中打开webview,但单击输入字段时不会打开键盘。如果我打开键盘,它会出现在对话框后面。(这似乎是众所周知的bug...

  • 我正在尝试弹出一个自定义对话框,当我点击一个按钮,但它不会弹出在所有。我的应用程序基本上是一个日历,我将使用sqlite在日历中添加/保留约会和其他内容,使用对话框,这是指定约会细节的地方。 我为此使用的代码如下: 我做错了什么?