启动我的应用程序时未检测到应用程序权限
Application permissions are not detected, when starting my app
我在帖子里看到了答案,其他的。但它还没有解决我的问题。我用 android 棉花糖。
(本人购买,应用源码)有个文件附件已经成功。
但是,当我尝试制作发布应用程序并进行调试时。都失败了。没有可用的应用程序权限。
doesn't require any special access
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天没解决这个问题了,因为我实在不知道做完了。
如果通过这个
when I try to make release app, and debug. all failed
你的意思是安装时列出的权限,它是 Marshmallow
或 android 6
之前 android 上的行为。如果您在具有 android lollipop
的设备上测试应用程序的 apk
文件,您将在安装时看到权限列表。
如果您希望在 android 6+
上安装应用程序时列出权限,您需要将 build.gradle
中的 target sdk
设置为 22
或更低,即这不是一个明智的方法,因为它会非常低并且如果您的应用程序使用不同库的最新版本可能会导致问题。
简而言之,您在具有 android 6+
的设备上看到的是正常的,在这些设备上您应该请求应用程序功能所需的敏感权限,明确地在应用程序运行时 as described here。
从 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;
}
}
我在帖子里看到了答案,其他的。但它还没有解决我的问题。我用 android 棉花糖。 (本人购买,应用源码)有个文件附件已经成功。 但是,当我尝试制作发布应用程序并进行调试时。都失败了。没有可用的应用程序权限。
doesn't require any special access
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天没解决这个问题了,因为我实在不知道做完了。
如果通过这个
when I try to make release app, and debug. all failed
你的意思是安装时列出的权限,它是 Marshmallow
或 android 6
之前 android 上的行为。如果您在具有 android lollipop
的设备上测试应用程序的 apk
文件,您将在安装时看到权限列表。
如果您希望在 android 6+
上安装应用程序时列出权限,您需要将 build.gradle
中的 target sdk
设置为 22
或更低,即这不是一个明智的方法,因为它会非常低并且如果您的应用程序使用不同库的最新版本可能会导致问题。
简而言之,您在具有 android 6+
的设备上看到的是正常的,在这些设备上您应该请求应用程序功能所需的敏感权限,明确地在应用程序运行时 as described here。
从 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;
}
}