김용규 12월 14일, 2022에 포스트됨 공유하기 12월 14일, 2022에 포스트됨 10.4까지는 휴대폰 번호를 추출해서 SerialKey로써 써왔는데 11.2버전으로 업그레이드 후 방식이 달라졌는지 전혀 작동을 안합니다. 도와주세요. 번호 추출.txt 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 c2design 12월 15일, 2022에 포스트됨 공유하기 12월 15일, 2022에 포스트됨 아래 링크를 먼저 확인 하시구요.. 위 링크에서 전화번호 얻어 오는 부분 추가 한 소스 입니다. unit PMUnit; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, System.Permissions, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, FMX.DialogService, FMX.Platform, FMX.PhoneDialer; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; BT_Call: TButton; Button4: TButton; BT_PNumer: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure BT_CallClick(Sender: TObject); procedure Button4Click(Sender: TObject); procedure BT_PNumerClick(Sender: TObject); private FPhoneDialerService: IFMXPhoneDialerService; procedure DisplayRationale(Sender: TObject; const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc); procedure Loacation_PermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); procedure Call_PermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); procedure Camera_PermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); procedure PNumber_PermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); { Private declarations } public { Public declarations } FPermissionLoacation, FPermissionCall, FPermissionCamera, FPermissionPNumber : string; end; var Form1: TForm1; implementation uses {$IFDEF ANDROID} Androidapi.JNI.Os, Androidapi.Helpers, AndroidApi.Jni.JavaTypes, Androidapi.JNI.Telephony, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNIBridge; // for 전화번호 {$ENDIF} {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject); begin FPermissionLoacation := JStringToString(TJManifest_permission.JavaClass.ACCESS_FINE_LOCATION ); FPermissionCall := JStringToString(TJManifest_permission.JavaClass.CALL_PHONE ); FPermissionCamera := JStringToString(TJManifest_permission.JavaClass.CAMERA ); FPermissionPNumber := JStringToString(TJManifest_permission.JavaClass.READ_PHONE_NUMBERS ); TPlatformServices.Current.SupportsPlatformService( IFMXPhoneDialerService, FPhoneDialerService); // 전화걸기 서비스 end; procedure TForm1.Button1Click(Sender: TObject); begin PermissionsService.RequestPermissions([FPermissionLoacation], Loacation_PermissionRequestResult, DisplayRationale); end; procedure TForm1.Button2Click(Sender: TObject); begin PermissionsService.RequestPermissions([FPermissionCall], Call_PermissionRequestResult, DisplayRationale); end; procedure TForm1.Button3Click(Sender: TObject); begin PermissionsService.RequestPermissions([FPermissionCamera], Camera_PermissionRequestResult, DisplayRationale); end; procedure TForm1.Button4Click(Sender: TObject); begin PermissionsService.RequestPermissions([FPermissionPNumber], PNumber_PermissionRequestResult, DisplayRationale); end; procedure TForm1.DisplayRationale(Sender: TObject; const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc); var I: Integer; RationaleMsg: string; begin for I := 0 to High(APermissions) do begin if APermissions[I] = FPermissionLoacation then RationaleMsg := RationaleMsg + 'The app needs to access the Permission Location' + SLineBreak + SLineBreak else if APermissions[I] = FPermissionCall then RationaleMsg := RationaleMsg + 'The app needs to access the Permission Call' + SLineBreak + SLineBreak else if APermissions[I] = FPermissionCamera then RationaleMsg := RationaleMsg + 'The app needs to access the Permission Camera' + SLineBreak + SLineBreak else if APermissions[I] = FPermissionPNumber then RationaleMsg := RationaleMsg + 'The app needs to access the Permission Phone Number' + SLineBreak + SLineBreak; end; // Show an explanation to the user *asynchronously* - don't block this thread waiting for the user's response! // After the user sees the explanation, invoke the post-rationale routine to request the permissions TDialogService.ShowMessage(RationaleMsg, procedure(const AResult: TModalResult) begin APostRationaleProc; end) end; procedure TForm1.Loacation_PermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); begin // 3 permissions involved: CAMERA, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE // if (Length(AGrantResults) = 3) and // (AGrantResults[0] = TPermissionStatus.Granted) and // (AGrantResults[1] = TPermissionStatus.Granted) and // (AGrantResults[2] = TPermissionStatus.Granted) then if ( Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then TDialogService.ShowMessage('Location permissions OK ' ) else TDialogService.ShowMessage('The required permissions are not granted'); end; procedure TForm1.Call_PermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); begin if ( Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then begin TDialogService.ShowMessage('Call permissions OK ' ); BT_Call.Enabled := TRUE; end else TDialogService.ShowMessage('The required permissions are not granted'); end; procedure TForm1.Camera_PermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); begin if ( Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then TDialogService.ShowMessage('Camera permissions OK ' ) else TDialogService.ShowMessage('The required permissions are not granted'); end; procedure TForm1.PNumber_PermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray); begin if ( Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then TDialogService.ShowMessage('Phone Number permissions OK ' ) else TDialogService.ShowMessage('The required permissions are not granted'); end; //************************************************************** procedure TForm1.BT_CallClick(Sender: TObject); begin FPhoneDialerService.Call( '114' ); // 전화걸기 end; // 전화번호 procedure TForm1.BT_PNumerClick(Sender: TObject); var obj : JObject; PhoneManager : JTelephonyManager; PhoneNumber : string; begin obj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE); PhoneManager := TJTelephonyManager.Wrap((obj as ILocalObject).GetObjectID); PhoneNumber := JStringToString(PhoneManager.getLine1Number); ShowMessage( PhoneNumber ); end; end. 1 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
질문
김용규
10.4까지는 휴대폰 번호를 추출해서 SerialKey로써 써왔는데 11.2버전으로 업그레이드 후 방식이 달라졌는지 전혀 작동을 안합니다.
도와주세요.
번호 추출.txt
이 댓글 링크
다른 사이트에 공유하기
1 answer to this question
Recommended Posts
이 토의에 참여하세요
지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.