我正在尝试从 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
我对 Android Studio 和 Android 编程都很陌生。我刚刚阅读了第一个常见 Intent 教程,它是关于AlarmClock. 我尝试编写一个简单的代码来测试该意图,但它无法处理抛出的异常SecurityException,堆栈跟踪如下所示:
\n05-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
根据我在网上的研究,我发现要统计最近版本的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
您好,我对此还很陌生,所以请帮助我理解为什么会出现此错误。我已经尝试了很多解决方案,所以我只想列出我所做的一切,因为我似乎无法理解为什么会发生这种情况。
我创建了一个项目,该项目在最低 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) 我向我的应用程序添加了位置权限。现在安装应用程序时,它会请求用户许可。这是我的代码:
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。我在这里缺少什么?
我目前无法让我的应用程序向用户发送对话以在 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
我需要通过单击按钮授予相机和麦克风权限。我希望我的权限依次出现,但在这种情况下,仅出现麦克风权限。要授予相机权限,我必须再次按下按钮。
我怎样才能实现这个目标?
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) 我的清单中有以下内容
<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)
如何让这款相机正常工作?
我们正在使用命令创建应用程序
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 文件
我怎样才能删除它?
我收到一封来自 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 ×8
java ×3
android-10.0 ×1
capacitor ×1
flutter ×1
mapfragment ×1
webview ×1
xamarin ×1