zoukankan      html  css  js  c++  java
  • delphi给App授予权限

    首先要切换到安卓平台下:

    第一步:

      Project — Options — Application — Uses Permissions:

    •  注意如下图:产生费用的功能 要谨慎勾选——打电话、发送短信…

    第二步:

    引用权限单元UnitPermission:(Alt+F11)

    unit UnitPermission;
    
    interface
    
    uses
    {$IFDEF ANDROID} Androidapi.Helpers,
     Androidapi.JNI.JavaTypes, Androidapi.JNI.OS, {$ENDIF}
      System.Permissions;
    
    function RequestLocation: Boolean;
    function RequestRecordAudio: Boolean;
    function RequestCamera: Boolean;
    function RequestReadStorage: Boolean;
    function RequestWriteStorage: Boolean;
    function RequestSendSMS:Boolean;
    function RequestReadPhoneState:Boolean;
    
    implementation
    
    function RequestReadPhoneState: Boolean;
    var
      Value: Boolean;
    begin
      Value := False;
    
    {$IFDEF ANDROID}
      PermissionsService.RequestPermissions(
      [JStringToString(TJManifest_permission.JavaClass.READ_PHONE_STATE)],
        procedure(const APermissions: TArray<string>;
         const AGrantResults: TArray<TPermissionStatus>)
        begin
          if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
          begin
            Value := (True);
          end
          else
          begin
            Value := (False);
          end;
        end);
    {$ENDIF}
      Result := Value;
    end;
    
    
    function RequestLocation: Boolean;
    var
      Value: Boolean;
    begin
      Value := False;
    
    {$IFDEF ANDROID}
      PermissionsService.RequestPermissions(
      [JStringToString(TJManifest_permission.JavaClass.ACCESS_FINE_LOCATION)],
        procedure(const APermissions: TArray<string>;
         const AGrantResults: TArray<TPermissionStatus>)
        begin
          if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
          begin
            Value := (True);
          end
          else
          begin
            Value := (False);
          end;
        end);
    {$ENDIF}
      Result := Value;
    end;
    
    function RequestRecordAudio: Boolean;
    var
      Value: Boolean;
    begin
      Value := False;
    {$IFDEF ANDROID}
      PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.RECORD_AUDIO)],
        procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
        begin
          if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
          begin
            Value := (True);
          end
          else
          begin
            Value := (False);
          end;
        end);
    {$ENDIF}
      Result := Value;
    end;
    
    function RequestCamera: Boolean;
    var
      Value: Boolean;
    begin
      Value := False;
    {$IFDEF ANDROID}
      PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.CAMERA)],
        procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
        begin
          if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
          begin
            Value := (True);
          end
          else
          begin
            Value := (False);
          end;
        end);
    {$ENDIF}
      Result := Value;
    
    end;
    
    function RequestReadStorage: Boolean;
    var
      Value: Boolean;
    begin
      Value := False;
    {$IFDEF ANDROID}
      PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE)],
        procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
        begin
          if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
          begin
            Value := (True);
          end
          else
          begin
            Value := (False);
          end;
        end);
    {$ENDIF}
      Result := Value;
    end;
    
    function RequestWriteStorage: Boolean;
    var
      Value: Boolean;
    begin
      Value := False;
    {$IFDEF ANDROID}
      PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)],
        procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
        begin
          if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
          begin
            Value := (True);
          end
          else
          begin
            Value := (False);
          end;
        end);
    {$ENDIF}
      Result := Value;
    end;
    
    function RequestSendSMS:Boolean;
    var
      Value: Boolean;
    begin
      Value := False;
    {$IFDEF ANDROID}
      PermissionsService.RequestPermissions([JStringToString(TJManifest_permission.JavaClass.SEND_SMS)],
        procedure(const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>)
        begin
          if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
          begin
            Value := (True);
          end
          else
          begin
            Value := (False);
          end;
        end);
    {$ENDIF}
      Result := Value;
    end;
    
    end.

    更改授权功能,对下图 红框中的 进行更改,还有其他一些小地方自己更改下就可以了

     把空格的地方 换作 下划线_ ;其他功能都类似:

    最后注意:

    如果按照上述方法 授权,功能仍不可用的话, 尝试勾选 下面这个
    Project——Options——Application——Entitlement List:


      

  • 相关阅读:
    CSS 透明度 设置 兼容IE FF
    Hibernate学习---第五节:普通组件和动态组件
    Ant学习---第五节:Ant_Junit介绍(基于3的版本)
    Ant学习---第四节:Ant属性的介绍
    Ant学习---第三节:使用Ant实现一个最小的项目编译
    Ant学习---第二节:Ant添加文件夹和文件夹集的使用
    Ant学习---第一节:Ant安装和简单使用
    JPA学习---第十二节:JPA中的联合主键
    JPA学习---第十一节:JPA中的多对多双向关联实体定义与注解设置及操作
    JPA学习---第十节:JPA中的一对一双向关联
  • 原文地址:https://www.cnblogs.com/karkash/p/15717593.html
Copyright © 2011-2022 走看看