启动我的应用时,未检测到应用程序权限

时间:2018-02-26 14:35:16

标签: android manifest

我已经在线程中看到了答案,其他人。但它还没有解决我的问题。我使用android marshmallow。 (我已购买,应用程序源代码)有一个文件附件已成功。 但是当我尝试发布应用程序并进行调试时。都失败了。没有可用的应用程序权限。

  

不需要任何特殊访问

This Work

This not work

如何修复,这是我的AndroidManifest.XML

<?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="com.mastekno.lock">

<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission
    android:name="android.permission.PACKAGE_USAGE_STATS"
    tools:ignore="ProtectedPermissions"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.CAMERA"/>

<application
    android:name=".LockApplication"
    android:allowBackup="true"
    android:label="@string/app_name"
    android:icon="@mipmap/ic_launcher"
    android:manageSpaceActivity=".module.splash.SplashActivity"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".module.splash.SplashActivity"
        android:label="@string/app_name"
        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=".module.pwd.CreatePwdActivity"
        android:label="Create Password"
        android:screenOrientation="portrait"/>
    <activity
        android:name=".module.lock.GestureSelfUnlockActivity"
        android:label="Unlock"
        android:screenOrientation="portrait"/>
    <activity
        android:name=".module.lock.GestureUnlockActivity"
        android:excludeFromRecents="true"
        android:label=""
        android:launchMode="singleTask"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:theme="@style/unlock_activity_style"/>
    <activity
        android:name=".module.setting.LockSettingActivity"
        android:label="Set"
        android:screenOrientation="portrait"/>
    <activity
        android:name=".module.lock.GestureCreateActivity"
        android:label="Create a pattern lock"
        android:screenOrientation="portrait"/>
    <activity
        android:name=".module.about.AboutMeActivity"
        android:label="About"
        android:screenOrientation="portrait"/>
    <activity
        android:name=".module.main.MainActivity"
        android:screenOrientation="portrait"/>

    <service android:name=".service.LoadAppListService"/>
    <service android:name=".service.LockService"/>

    <receiver android:name=".receiver.BootBroadcastReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </receiver>
</application>

我有2天没有解决这个问题,因为我真的不知道完成它。

2 个答案:

答案 0 :(得分:0)

如果是这个

  

当我尝试发布应用程序并进行调试时。都失败了

您的意思是安装时列出的权限,它是Marshmallowandroid 6之前的Android上的行为。如果您在具有android apk的设备上测试应用的lollipop文件,则会在安装时看到列出的权限。

如果您希望在android 6+上安装应用时列出权限,则需要将target sdk build.gradle改为22或更低,而不是android 6+明智的方法,因为它会非常低,如果您的应用程序使用不同库的最新版本,可能会导致问题。

简而言之,您在function* interiorFileSaga() { yield [ takeLatest(wizardActionTypes.UPLOAD_INTERIOR_FILE, handleInteriorFileUpload), takeLatest(wizardActionTypes.INTERIOR_FILE_PROCESSING, handleInteriorFileProcessing), ] } 的设备上看到的是正常的,在这些设备上,您应该要求应用程序功能所需的敏感权限,当应用程序运行时as described here

答案 1 :(得分:0)

从Marshmallow应用程序需要请求运行时权限。它可能被用户授予或拒绝。可以通过覆盖onRequestPermissionsResult方法来识别用户的响应。

public int PERMISSIONS_REQUEST_CAMERA = 100;


if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
     if ( ActivityCompat.checkSelfPermission( getApplicationContext(), Manifest.permission.CAMERA )
          != PackageManager.PERMISSION_GRANTED ) {
            ActivityCompat.requestPermissions(SplashActivity.this, new String[]{Manifest.permission.CAMERA}, PERMISSIONS_REQUEST_CAMERA);
            }else {
             useCamera();
            }
        }else {
          useCamera();
        }

public void useCamera(){
  //your code goes here
}

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

    switch(requestCode){
        case PERMISSIONS_REQUEST_CAMERA:
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                useCamera();
            }else
                //Permission denied
            break;

    }
}