标签: android-permissions

找不到符号变量 SEND_SMS

我正在尝试从 Android 应用程序发送短信,编写了以下代码,但出现编译错误:“找不到符号变量 SEND_SMS”。我还导入了“android.Manifest.permission”但未解决。请帮我。

案例 R.id.SendSMS:

            // Here, thisActivity is the current activity
            if (ContextCompat.checkSelfPermission(this,
                    Manifest.permission.SEND_SMS)
                    != PackageManager.PERMISSION_GRANTED) {

                // Should we show an explanation?
                if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                        Manifest.permission.SEND_SMS)) {

                    // Show an expanation to the user *asynchronously* -- don't block
                    // this thread waiting for the user's response! After the user
                    // sees the explanation, try again to request the permission.

                } else {

                    // No explanation needed, we can request the permission.

                    ActivityCompat.requestPermissions(this,
                            new String[]{Manifest.permission.SEND_SMS},
                            MY_PERMISSIONS_REQUEST_SEND_SMS);

                    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-permissions android-studio android-6.0-marshmallow

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

即使使用 <uses-permission> 进行 SET_ALARM 时也会出现 Permission Denial?

我对 Android Studio 和 Android 编程都很陌生。我刚刚阅读了第一个常见 Intent 教程,它是关于AlarmClock. 我尝试编写一个简单的代码来测试该意图,但它无法处理抛出的异常SecurityException,堆栈跟踪如下所示:

\n\n
\n

05-20 15:36:25.010 2342-2342/com.viphalong.helloandroid E/AndroidRuntime: 致命异常: main\n 进程: com.viphalong.helloandroid,PID: 2342\n java.lang.RuntimeException: 无法启动活动ComponentInfo{com.viphalong.helloandroid/com.viphalong.helloandroid.MainActivity}:java.lang.SecurityException:权限拒绝:启动意图{ act=android.intent.action.SET_ALARM cmp=com.android.deskclock/.HandleApiCalls(有extras) } 来自 ProcessRecord{ad271560 2342:com.viphalong.helloandroid/u0a52} (pid=2342, uid=10052) 需要 com.android.alarm.permission.SET_ALARM\n 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java :2184)\n 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)\n 在 android.app.ActivityThread.access$800(ActivityThread.java:135)\n 在 android.app.ActivityThread$H.handleMessage (ActivityThread.java:1196)\n 在 android.os.Handler.dispatchMessage(Handler.java:102)\n 在 android.os.Looper.loop(Looper.java:136)\n 在 android.app.ActivityThread。 main(ActivityThread.java:5001)\n 在 java.lang.reflect.Method.invokeNative(本机方法)\n 在 java.lang.reflect.Method.invoke(Method.java:515)\n 在 com.android。 Internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)\n 位于 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)\n 位于 dalvik.system.NativeStart.main(本机方法) )\n 原因为:java.lang.SecurityException:权限拒绝:从 ProcessRecord{ad271560 2342:com 开始 Intent { act=android.intent.action.SET_ALARM cmp=com.android.deskclock/.HandleApiCalls (has extras) }。 viphalong.helloandroid/u0a52} (pid=2342, uid=10052) 需要 …

java android android-alarms android-permissions android-studio

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

Android 7.0版本的权限数最准确的统计方法是什么?

根据我在网上的研究,我发现要统计最近版本的Android(Android 7)的权限数量,我们可以参考此链接中提出的官方文档(https://developer.android.com/参考/android/Manifest.permission.html)。

建议的表包含 138 个权限,这是我认为我的计数是正确的,直到 AndroidManifest.xml ( https://android.googlesource.com/platform/frameworks/base/+/android-7.0.0_r29/core/res/ AndroidManifest.xml)我使用 github 上找到的这个小解析程序扫描的 Android 操作系统文件分析(https://github.com/benjholla/AndroidPermissionAttributeMapper)。

生成的输出文件是:

android.permission-group.CONTACTS:
3 Permissions
android.permission.READ_CONTACTS
android.permission.GET_ACCOUNTS
android.permission.WRITE_CONTACTS
NO PERMISSION GROUP FOUND:
320 Permissions
android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK
android.permission.DIAGNOSTIC
android.permission.INTERACT_ACROSS_USERS
android.permission.SIGNAL_PERSISTENT_PROCESSES
android.permission.START_TASKS_FROM_RECENTS
android.permission.BIND_SCREENING_SERVICE
android.permission.SET_TIME_ZONE
com.android.browser.permission.WRITE_HISTORY_BOOKMARKS
android.permission.REGISTER_SIM_SUBSCRIPTION
android.permission.USER_ACTIVITY
android.permission.RECEIVE_MEDIA_RESOURCE_USAGE
android.permission.TABLET_MODE
android.permission.SUBSCRIBED_FEEDS_READ
android.permission.BIND_TV_REMOTE_SERVICE
android.permission.CONTROL_INCALL_EXPERIENCE
android.permission.MASTER_CLEAR
android.permission.WAKE_LOCK
android.permission.HDMI_CEC
android.permission.MODIFY_CELL_BROADCASTS
android.permission.MANAGE_USERS
android.permission.BIND_VOICE_INTERACTION
android.permission.GRANT_RUNTIME_PERMISSIONS
android.permission.BIND_RUNTIME_PERMISSION_PRESENTER_SERVICE
android.permission.PACKAGE_USAGE_STATS
android.permission.BLUETOOTH_MAP
android.permission.GET_PACKAGE_SIZE
android.permission.BIND_TELECOM_CONNECTION_SERVICE
android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST
com.android.alarm.permission.SET_ALARM
android.permission.SET_WALLPAPER_HINTS
android.permission.DEVICE_POWER
android.permission.UPDATE_CONFIG
android.permission.INTERNET
android.permission.INJECT_EVENTS
android.permission.UPDATE_LOCK_TASK_PACKAGES
android.permission.RECEIVE_EMERGENCY_BROADCAST
android.permission.RETRIEVE_WINDOW_TOKEN
android.permission.CAMERA_DISABLE_TRANSMIT_LED
android.permission.SET_WALLPAPER
android.permission.BIND_PRINT_SERVICE
android.permission.READ_LOGS
android.permission.REMOVE_TASKS
android.permission.READ_SYNC_SETTINGS
android.permission.ACCESS_MTP
android.permission.AUTHENTICATE_ACCOUNTS
android.permission.CONTROL_LOCATION_UPDATES
android.permission.READ_PROFILE
android.permission.CRYPT_KEEPER
android.permission.RECEIVE_BOOT_COMPLETED …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-permissions android-7.0-nougat

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

在 MapFragment 内调用 onRequestPermissionResult 时 Android Studio @androidx.annotation.NonNull 错误

您好,我对此还很陌生,所以请帮助我理解为什么会出现此错误。我已经尝试了很多解决方案,所以我只想列出我所做的一切,因为我似乎无法理解为什么会发生这种情况。

我创建了一个项目,该项目在最低 SDK 21 上集成了 GoogleMaps,以在 SDK 28 上进行目标/编译。我确实在宣言中调用了所需的权限。

我创建了一个扩展 MapFragment 类的文件,一切似乎都工作正常。我能够检查并请求用户位置的权限(该框确实显示),但是当我调用 onRequestPermissionResult 方法时,它显示不同,并给我一个错误,提示“错误:找不到符号类 NonNull ”:

@Override
public void onRequestPermissionsResult(int requestCode, @androidx.annotation.NonNull String[] permissions, @androidx.annotation.NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
} 
Run Code Online (Sandbox Code Playgroud)

在我的其他片段(android.support.v4.app)类中,@androidx.annotation.NonNull 是@NonNull。我首先想到也许我需要将实现“com.android.support:support-annotations:28.0.0”添加到 build.gradle,但事实并非如此。然后,我尝试将 @androidx.annotation.NonNull 替换为 @NonNull,这使得错误消失,但每当我单击允许或拒绝时,它都不会命中 onRequestPermissionResult 方法。

我创建了一个检查权限的方法,但它不允许我在不检查构建是否大于或等于 SDK 23 的情况下单独使用 requestPermission,但我的最小 SDK 是 21。因此,我只是检查构建是否大于或等于 SDK 23。大于或等于 21 并使用 ActivityCompat 获取 requestPermission 方法并且它有效。它会检查并请求许可,所以我想也许 onRequestPermissionResult 只能在 MainActivity 中工作,这是我不想要的。我希望能够在检查 MapFragment 内是否授予请求后调用方法。是因为 android.support.v4.app 不支持 MapFragment 吗?它看起来像这样:

 private boolean checkAskPermission(int requestCode, String permissionString){
    if(Build.VERSION.SDK_INT >= 21){
        int permission …
Run Code Online (Sandbox Code Playgroud)

java android android-permissions mapfragment android-studio

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

shouldShowRequestPermissionRationale 为 false

我向我的应用程序添加了位置权限。现在安装应用程序时,它会请求用户许可。这是我的代码:

if (fragment.shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION) {
    fragment.requestPermissions(....);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我安装了以前的应用程序版本时,我没有此位置权限并更新应用程序,那么它不会请求许可,因为

fragment.shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION

回报false

通常,只有当用户单击“不再询问”时,才会返回 false。我在这里缺少什么?

android android-permissions

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

将我的应用设置为默认拨号器而不询问 Android 10 (Q) 中的选项?

我目前无法让我的应用程序向用户发送对话以在 API 29 上设置默认拨号器,但相同的代码在 Android 10 (Q) 下运行良好。

我测试了这个“无响应”意图提示用户设置短信示例的默认处理程序,但不适用于我的。然后我按照https://developer.android.com/guide/topics/permissions/default-handlers但没有解决我的问题。API 级别 29 或更高版本是否有任何特殊更改可以让用户设置默认应用程序?

这是我的工作代码(适用于 Android 10 以下)

TelecomManager telecomManager = (TelecomManager) getSystemService(TELECOM_SERVICE);
        if (!getPackageName().equals(telecomManager.getDefaultDialerPackage())) {
            Intent intent = new Intent(ACTION_CHANGE_DEFAULT_DIALER)
                    .putExtra(EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, getPackageName());
            startActivity(intent);
        }
Run Code Online (Sandbox Code Playgroud)

我在 logcat 中得到的内容在这里

在此输入图像描述

android android-intent telephonymanager android-permissions android-10.0

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

按下按钮或按下事件后,Flutter 授予摄像头和麦克风权限

我需要通过单击按钮授予相机和麦克风权限。我希望我的权限依次出现,但在这种情况下,仅出现麦克风权限。要授予相机权限,我必须再次按下按钮。

我怎样才能实现这个目标?

            import 'package:flutter/material.dart';
            import 'package:flutter_inappwebview/flutter_inappwebview.dart';
            import 'package:permission_handler/permission_handler.dart';

            class IframeScreen extends StatefulWidget {
            @override
           _IframeScreenState createState() => _IframeScreenState();
             }

             class _IframeScreenState extends State<IframeScreen> {
              InAppWebViewController _webViewController;

              Future webViewMethod() async {
              print('In Microphone permission method');
              WidgetsFlutterBinding.ensureInitialized();
            
              Permission.microphone.request();
              WebViewMethodForCamera();

             }
              Future WebViewMethodForCamera() async{
               print('In Camera permission method');
               WidgetsFlutterBinding.ensureInitialized();
               Permission.camera.request();
              }



            @override
            Widget build(BuildContext context) {
            return Scaffold(
            appBar: AppBar(
            title: Text('Check this frame'),
           ),
             body: Column(
      children: <Widget>[
        RaisedButton(
          onPressed: webViewMethod,
          child: Text('Join'),
          textColor: Colors.black,
        ),

        Expanded(
          child: Container(
            child: InAppWebView(
                initialUrl: …
Run Code Online (Sandbox Code Playgroud)

webview android-permissions flutter

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

没有相机权限无法打开相机“0”

我的清单中有以下内容

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />
Run Code Online (Sandbox Code Playgroud)

但是我收到这个错误

An error occurred while connecting to camera 0: Status(-8, EX_SERVICE_SPECIFIC): '1: validateClientPermissionsLocked:1165: Caller ... (PID 10153, UID 6049) cannot open camera "0" without camera permission'
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用此代码让相机正常工作

public static Camera getCameraInstance(){
    Camera c = null;
    try {
        c = Camera.open();
    } catch (Exception e) {
        Log.e("getCameraInstance", "exception", e);
    }
    return c; // returns null if camera is unavailable
}
Run Code Online (Sandbox Code Playgroud)

如何让这款相机正常工作?

java android-camera android-permissions

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

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

我们正在使用命令创建应用程序

ionic build --configuration=development && ionic capacitor copy android --no-build && npx cap open android
Run Code Online (Sandbox Code Playgroud)

现在最新的 Android 政策告诉我们删除REQUEST_INSTALL_PACKAGES此权限。

我如何删除相同的权限。

尝试添加

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

在文件 app/src/main/mainfest 文件中

但是当我点击 build 命令时,我仍然可以看到

电容器-corodova-android-插件文件/mainfest/mainfest 文件

我怎样才能删除它?

android android-permissions ionic-framework capacitor

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

Xamarin - 权限“REQUEST_INSTALL_PACKAGES” - 哪个依赖项带来此权限

我收到一封来自 Google 的邮件,警告我有关“REQUEST_INSTALL_PACKAGES”权限的信息。我理解该警告,但我找不到哪个依赖项带来了此权限。

我在合并的清单中找到了“REQUEST_INSTALL_PACKAGES”权限,但它不是由我的代码添加的,所以我猜它来自依赖项,但我找不到哪个。

你知道我如何找到哪个依赖项带来了此权限吗?

供您参考,我使用的是 Xamarin.Android 11 和 Xamarin.Forms 4.8。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="FastAndroidCamera" version="2.0.0" targetFramework="monoandroid81" />
  <package id="Forms9Patch" version="1.5.0.9" targetFramework="monoandroid81" />
  <package id="LiteDB" version="5.0.9" targetFramework="monoandroid81" />
  <package id="Microsoft.AppCenter" version="1.6.0" targetFramework="monoandroid81" />
  <package id="Microsoft.AppCenter.Analytics" version="1.6.0" targetFramework="monoandroid81" />
  <package id="Microsoft.AppCenter.Crashes" version="1.6.0" targetFramework="monoandroid81" />
  <package id="Microsoft.AppCenter.Distribute" version="1.6.0" targetFramework="monoandroid81" />
  <package id="Microsoft.AspNetCore.Connections.Abstractions" version="3.1.20" targetFramework="monoandroid11.0" />
  <package id="Microsoft.AspNetCore.Http.Connections.Client" version="3.1.20" targetFramework="monoandroid11.0" />
  <package id="Microsoft.AspNetCore.Http.Connections.Common" version="3.1.20" targetFramework="monoandroid11.0" />
  <package id="Microsoft.AspNetCore.Http.Features" version="3.1.20" targetFramework="monoandroid11.0" />
  <package id="Microsoft.AspNetCore.SignalR.Client" version="3.1.20" targetFramework="monoandroid11.0" />
  <package id="Microsoft.AspNetCore.SignalR.Client.Core" version="3.1.20" targetFramework="monoandroid11.0" /> …
Run Code Online (Sandbox Code Playgroud)

android xamarin.android xamarin android-permissions

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