标签: android-permissions

在授予所有权限时,应用程序不会移至下一个活动

我正确地允许和拒绝权限,应用程序第一次运行正常,但是当授予所有权限时,下次用户启动应用程序时,它只显示启动屏幕并变得稳定,不会移动到下一个活动,而且它也不会给出任何错误,我正在尝试的是下面的。

 private static final int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 5;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    splashIcon = (ImageView) findViewById(R.id.splashIcon);
    new Thread(new Runnable()
    {
        @Override
        public void run()
        {
            Animation anim1 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.bounce);
            splashIcon.setAnimation(anim1);
            anim1.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {}
                @Override
                public void onAnimationEnd(Animation animation) {
                    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
                    {
                        checkMultiplePermissions();
                    }else{
                        startActivity(new Intent(Splash.this,UserGuideActivity.class));
                        finish();
                    }
                }
                @Override
                public void onAnimationRepeat(Animation animation)
                {
                }
            });
        }
    }).start();
}
private void checkMultiplePermissions() {
    if (Build.VERSION.SDK_INT >= 23) …
Run Code Online (Sandbox Code Playgroud)

android android-permissions

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

sdk 22和25之间的ACCESS_FINE_LOCATION和ACCESS_COARSE_LOCATION权限有什么区别吗?

我试图通过在 AndroidManifest.xml 中声明来从 GPS 或使用这些权限的网络提供商获取当前位置,

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Run Code Online (Sandbox Code Playgroud)

我在运行时验证权限,

ActivityCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
Run Code Online (Sandbox Code Playgroud)

ActivityCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED
Run Code Online (Sandbox Code Playgroud)

对于 Android SDK 版本 22,它工作得很好,而在 SDK 版本 25 中,尽管在 AndroidManifest.xml 中声明了权限,但它在运行时并未得到反映。

我检查了这些权限是否被授予,

adb shell dumpsys 包 com.abc.xyz

当我尝试使用 adb shell 授予权限时,在 SDK-25 上运行的应用程序未授予权限,如下所示:

adb shell pm grant com.abc.xyz android.Manifest.permission.ACCESS_COARSE_LOCATION

我怀疑 Android 从 SDK 版本 25 开始授予这些权限(如果我错了,请纠正我)。仅通过谷歌搜索,我无法弄清楚 SDK 版本之间的权限级别/严重性如何变化。

请帮我了解一下。

android android-manifest android-location android-permissions

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

安装时未请求 Android 权限

我在这里发帖之前搜索过类似的问题,但没有找到解决我问题的答案。我的 manifest.xml 文件似乎是正确的,我希望用户被要求获得安装权限(不是运行时,它已经可以与我的代码一起使用)。我不知道为什么我放的参数不起作用:

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:name="VILES" android:versionCode="1" android:versionName="0.0.1" package="fr.nc.delegue.referendum" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:usesCleartextTraffic="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-feature android:name="android.hardware.telephony" android:required="false" />
    <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
</manifest>
Run Code Online (Sandbox Code Playgroud)

我使用 Cordova(和 Quasar)来构建我的应用程序,该应用程序运行良好,但我仍然遇到安装时没有请求权限的问题......任何人都可以告诉我我在这里做错了什么吗?提前致谢 :)

android android-manifest cordova android-permissions

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

向 config.xml 文件添加使用权限后 Ionic 应用程序崩溃

通过向 config.xml 添加 MODIFY_AUDIO_SETTINGS 权限,我的应用程序将在运行后崩溃。

<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/uses-permission" xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
</edit-config>
Run Code Online (Sandbox Code Playgroud)

然后运行应用程序:

 ionic cordova run android -- device
Run Code Online (Sandbox Code Playgroud)

我也尝试获取 ionic android 权限

 import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';

 this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(
  result =>console.log('Haspermission?',result.hasPermission),
  err =>this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.CAMERA)
);
Run Code Online (Sandbox Code Playgroud)

但没有弹出窗口询问用户许可。最后我直接使用了cordova权限

ionic cordova plugin add cordova-plugin-android-permissions

declare var cordova:any
var permissions = cordova.plugins.permissions;
permissions.requestPermission(permissions.RECORD_AUDIO, successCallback, errorCallback);
Run Code Online (Sandbox Code Playgroud)

我可以获得相机或 record_audio 的许可,但 requestPermission 对于 MODIDY_AUDIO_SETTINGS 许可返回 false。

permissions.requestPermission(permission.MODIDY_AUDIO_SETTINGS, success, error);

function error() {
    resolve(false);
}

function success(status) {
  if (status.hasPermission) {  // <-- status.hasPermission is false here …
Run Code Online (Sandbox Code Playgroud)

webrtc cordova android-permissions getusermedia ionic-framework

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

Android 应用程序没有互联网连接 - 无需权限

好吧,我已经构建了一个应用程序来在远程数据库上存储值。有用!!我没有使用模拟器进行测试,而是使用自己的手机。现在的问题是,在我的手机上,它运行良好……没有问题,但是当我将它安装在另一部手机上时,该应用程序无法连接到互联网。我在 android manifest.xml 中包含了互联网权限。

我试过这些,但没有奏效:

  1. 构建 apk 并安装在新手机中。
  2. 直接编译到新手机。
  3. 通过 shareit 将 apk 从旧手机发送到新手机。
  4. 创建签名的 apk 并安装。
  5. 通过 wifi 和移动数据进行检查(注意:旧手机中的 WIFI 和移动数据均可使用)。
  6. 检查 android 兼容性:最多支持 android 10。

*我为 try...catch 块添加了错误消息,以敬酒的形式让用户知道问题所在。和没有互联网返回连接问题的捕获异常。我收到了那个错误信息。

通过研究,我了解到 Internet 权限被归类为正常权限,在安装时不会提示用户。

我构建了第二个虚拟应用程序:同样的问题......直接编译到新手机但没有用......它在旧手机上工作......

旧手机:搭载 Android 8.1 的三星 J7 Prime 新手机:搭载 Android 9 的三星 J7 Pro

任何想法或建议都会很高兴有帮助...谢谢!

java xml android android-permissions android-studio

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

如何检查 Manifest.permission.MANAGE_EXTERNAL_STORAGE 是否被授予?

如何检查Manifest.permission.MANAGE_EXTERNAL_STORAGE权限是否被授予?我已经尝试了以下但它不起作用:

ContextCompat.checkSelfPermission(context, 
  "Manifest.permission.MANAGE_EXTERNAL_STORAGE")
  == PackageManager.PERMISSION_GRANTED
Run Code Online (Sandbox Code Playgroud)

尽管已授予权限,但上述代码始终返回 false。任何帮助表示赞赏,谢谢!

android android-manifest android-permissions android-10.0

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

为什么有些机器人显示权限被拒绝,而有些则不显示(两者都没有root)?

这是我通过 USB 运行的命令

adb -s pm disable-user com.instagram.android
Run Code Online (Sandbox Code Playgroud)

错误:java.lang.SecurityException:权限拒绝:尝试从 pid=21028、uid=2000、包 uid=10134 更改组件状态

我也尝试过 --user 2000--user 0没有--user 13任何运气

adb shell pm list users

用户:UserInfo{0:Owner:13} 正在运行

adb -s pm disable-user --user 13 com.instagram.android
Run Code Online (Sandbox Code Playgroud)

以上是在小米红米2 Prime上的android 5.1上进行的。

而相同的代码在摩托罗拉 Moto C 上的 android 7.0上运行时 效果非常好。两款都是全新的免root手机。有什么不同 ?我是否缺少任何权限设置?

android root adb rooted-device android-permissions

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

违反请求安装包权限:权限使用与应用程序的核心用途没有直接关系

违反请求安装包权限:权限使用与应用程序的核心用途没有直接关系。

我们发现您的应用不符合REQUEST_INSTALL_PACKAGES允许使用权限的方式。具体来说,权限的使用与应用程序的核心用途没有直接关系。

之前推荐的答案

离子电容器删除 Android 构建的 REQUEST_INSTALL_PACKAGES 权限

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" tools:node="remove"/>
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml中

或者从 Android Manifest.xml Merged Manifest Tab 中删除,该选项卡没有引用

android.permission.REQUEST_INSTALL_PACKAGES

我使用的唯一 Cordova 插件是 localforage-cordovasqlitedriver

电容器插件列表,

在此输入图像描述

如何有效地搜索插件和项目以查找正在添加的插件和项目android.permission.REQUEST_INSTALL_PACKAGES

我还发现

公共静态最终字符串REQUEST_INSTALL_PACKAGES =“android.permission.REQUEST_INSTALL_PACKAGES”;

在~/Library/Android/sdk/platforms/android-32/android.jar!/android/Manifest.class

android cordova android-permissions ionic-framework capacitor

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

由于 REQUEST_INSTALL_PACKAGES 权限,Android 应用程序更新被 Google Play 商店拒绝

是否有人因 REQUEST_INSTALL_PACKAGES 权限而被 Google Play 拒绝? 拒绝原因

我从我的应用程序中删除了此权限,甚至删除了使用它的插件,但仍然遭到拒绝。我检查了所有android清单文件,甚至所有日志都没有REQUEST_INSTALL_PACKAGES权限

android android-manifest google-play android-permissions flutter

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

运行时权限:将结果ResultInfo {who = @ android:requestPermissions:,request = 123,result = 0,data = null}传递给活动失败

我想获得READ_EXTERNAL_STORAGE权限.这是我的代码

    // Check if user granted the permission
    int hasReadExternalStoragePermission = ContextCompat.checkSelfPermission(this,
            Manifest.permission.READ_EXTERNAL_STORAGE);


   if(hasReadExternalStoragePermission == PackageManager.PERMISSION_GRANTED) {
       displaySongs();
   } else {
       // Should we show explanation?
        if( ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.READ_EXTERNAL_STORAGE)) {
               // Show explanation to user
        } else {

            // No explanation needed. We can request permissions
            String permissions[] = {
                    Manifest.permission.READ_EXTERNAL_STORAGE
            };
            ActivityCompat.requestPermissions(this, permissions, REQUEST_PERMISSIONS_CODE);
        }
   }
Run Code Online (Sandbox Code Playgroud)

这是回叫方法

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

    switch (requestCode) {
        case REQUEST_PERMISSIONS_CODE:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // Permission Granted …
Run Code Online (Sandbox Code Playgroud)

permissions android android-permissions

0
推荐指数
1
解决办法
3318
查看次数