【问题标题】:Permissions not showing while installing apk安装apk时权限不显示
【发布时间】:2016-07-02 02:15:51
【问题描述】:

我正在使用 FlashBuilder 制作一个带有 ActionScript 的 Android 应用程序。我需要为我的应用程序使用 WiFi 权限。该应用程序可以在桌面上正常运行(AIR 桌面项目)。现在,当我尝试为 Android(移动项目)制作它时,它没有显示任何错误。我启用了我需要的权限(网络和 wifi)并制作了 .apk 文件。但是,当我在我的 Android 6.0.1 设备(注 5)上安装 .apk 文件时,它声称该应用程序不要求任何权限。 我决定向 adobe 网站请求所有权限

<android> 
<manifestAdditions> 
    <![CDATA[ 
        <manifest> 
            <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
            <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
            <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
            <uses-permission android:name="android.permission.CAMERA" /> 
            <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 
            <uses-permission android:name="android.permission.INTERNET" /> 
            <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
            <uses-permission android:name="android.permission.RECORD_AUDIO" /> 
            <uses-permission android:name="android.permission.WAKE_LOCK" /> 
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
        </manifest> 
    ]]> 
</manifestAdditions> 

它要求一些但不要求一些。它不要求的是以下这些

<manifest> 
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
            <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
            <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 
            <uses-permission android:name="android.permission.INTERNET" /> 
            <uses-permission android:name="android.permission.WAKE_LOCK" /> 
        </manifest> 

我尝试使用 FlashBuilder 制作一个新的 MobileProject。我将其保留为默认值(空白屏幕)并请求互联网许可。它也没有请求许可。两个应用程序在午餐时立即崩溃。

现在在包含权限的文件上有一条警告,“未检测到文档的语法约束(DTD 或 XML 架构)”,但实际上在我触及其中的任何内容之前就出现在新项目中。

【问题讨论】:

  • 也许您使用的是 targetSdk=23?如果这是真的,那么您应该在需要时询问所有必要的权限。如果您不想浪费时间询问权限,只需将 targetSdk 版本降低到 22

标签: android permissions actionscript


【解决方案1】:
Actually android has new policy to show runTime premission from the marshmallow to you need to implement premission at runtime like this in Activity


  protected void checkPermissionForReadWriteStorage() {

        final int writeExternalStorage = ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
        final int readExternalStorage = ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE);
        if (writeExternalStorage == PackageManager.PERMISSION_GRANTED && readExternalStorage == PackageManager.PERMISSION_GRANTED) {


        } else {
            boolean requestPermissionRationale = ActivityCompat.shouldShowRequestPermissionRationale(BaseActivity.this, android.Manifest.permission.READ_EXTERNAL_STORAGE);
            if (requestPermissionRationale) {

                Toast.makeText(BaseActivity.this, "Please provide  permission for reading images from gallery.", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent();
                intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                Uri uri = Uri.fromParts("package", BaseActivity.this.getPackageName(), null);
                intent.setData(uri);
                BaseActivity.this.startActivity(intent);
            } else {
                ActivityCompat.requestPermissions(BaseActivity.this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE,
                        android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);
            }
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode) {
            case 2:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//                    getLocationAndSaveInDatabaseOrEnableGPS();


                }
                break;
        }
    }

【讨论】:

  • 处理权限的旧方法(应用程序方面)应该仍然适用于 Marshmallow(我的其他应用程序也可以)。此外,当我请求权限时,会以“旧”方式询问一些人,但有些人不会。
【解决方案2】:
public void verifyStoragePermissions() {
    if (ContextCompat.checkSelfPermission(YourActivityName.this,
            Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(getBaseContext(), "Denied", Toast.LENGTH_SHORT).show();
        if (ActivityCompat.shouldShowRequestPermissionRationale(YourActivityName.this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE)) {

        } else {


        }
    }else{
        Toast.makeText(getBaseContext(), "Granted",Toast.LENGTH_SHORT).show();
    }
}

只需将下面的代码更改为您需要显示的权限

if (ContextCompat.checkSelfPermission(YourActivityName.this,
       Manifest.permission.WRITE_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED)

【讨论】:

  • 我使用的是 ActionScript 而不是 JAVA。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
相关资源
最近更新 更多