EasyDelphi Q&A

.تم الانتقال للموقع الجديد . وسيبقى الموقع القديم هذا متاح للقراءة فقط حتى الانتهاء من نقل كل الاسئلة إلى الموقع الجديد

يمكنك طرح الاسئلة والنقاشات في الموقع الجديد. الذهاب للموقع الجديد


+4 تصويتات
99 مشاهدات

كيف تفتح ملف فيديو Mp4 أو pdf من تطبيقك على الأندرويد

سُئل في تصنيف fmx بواسطة (870 نقاط)
عُدل بواسطة | 99 مشاهدات
0
اذا كان عندك معلومة وتريد نشرها . اكتبها كسؤال . واكتب المعلومة كجواب .. لانها بهذا الشكل ستظهر وكانها مشكلة بدون حل .
0
تم ، نعتذر :)

1 إجابة واحدة

+2 تصويتات

للأمانة لست صاحب الفكرة الملف حملته من النت ونسيت الصفحة حتى أضع المصدر .

أضع هنا ملف xPlat.OpenPDF.pas يساعدك على فتح ملفات ال pdf أو mp4 فقط قم بتغيير العبارة
 

Intent.setDataAndType(StrToJURI('file://' + SharedFilePath),      StringToJString('video/mp4'));

Intent.setDataAndType(StrToJURI('file://' + SharedFilePath),      StringToJString('application/pdf'));


----------------------------------

 

unit xPlat.OpenPDF;

interface

procedure OpenPDF(const APDFFilename: string; AExternalURL: Boolean = False);

implementation

uses
  System.SysUtils,
  IdURI,
  FMX.Forms,
  System.Classes,
  System.IOUtils,
  FMX.WebBrowser,
  FMX.Types,
  FMX.StdCtrls,
  FMX.Dialogs
{$IF DEFINED(ANDROID)}
    , Androidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android,
  Androidapi.Helpers, Androidapi.JNI.Net, Androidapi.JNI.JavaTypes
{$ENDIF}
{$IF DEFINED(IOS)}
    , iOSApi.Foundation, Macapi.Helpers, FMX.Helpers.iOS
{$ENDIF}
    ;

{$IF DEFINED(ANDROID)}

procedure OpenPDF(const APDFFilename: string; AExternalURL: Boolean = False);
var
  Intent: JIntent;
  Filepath: String;
  SharedFilePath: string;
  tmpFile: String;
begin
  if not AExternalURL then
  begin
    Filepath := TPath.Combine(TPath.GetDocumentsPath, APDFFilename);
    SharedFilePath := TPath.Combine(TPath.GetSharedDocumentsPath, APDFFilename);

    if TFile.Exists(SharedFilePath) then
      TFile.Delete(SharedFilePath);

    TFile.Copy(Filepath, SharedFilePath);
  end;

  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);

  tmpFile := StringReplace(APDFFilename, ' ', '%20', [rfReplaceAll]);

  if AExternalURL then
    // Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,
    // TJnet_Uri.JavaClass.parse(StringToJString(TIdURI.URLEncode(tmpFile))))
    Intent.setData(StrToJURI(tmpFile))
  else
    Intent.setDataAndType(StrToJURI('file://' + SharedFilePath),
      StringToJString('application/pdf'));

  try
    SharedActivity.startActivity(Intent);
  except
    on E: Exception do
      ShowMessage('Não é possível abrir o aquivo PDF' + sLineBreak +
        Format('[%s] %s', [E.ClassName, E.Message]));
  end;
end;
{$ENDIF}
{$IF DEFINED(iOS)}

type
  TCloseParentFormHelper = class
  public
    procedure OnClickClose(Sender: TObject);
  end;

procedure TCloseParentFormHelper.OnClickClose(Sender: TObject);
begin
  TForm(TComponent(Sender).Owner).Close();
end;

procedure OpenPDF(const APDFFilename: string; AExternalURL: Boolean = False);
var
  NSU: NSUrl;
  OK: Boolean;
  frm: TForm;
  WebBrowser: TWebBrowser;
  btn: TButton;
  btnShare: TButton;
  toolSuperior: TToolBar;
  Evnt: TCloseParentFormHelper;
  tmpFile: String;
begin
  frm := TForm.CreateNew(nil);

  toolSuperior := TToolBar.Create(frm);
  toolSuperior.Align := TAlignLayout.Top;
  toolSuperior.StyleLookup := 'toolbarstyle';
  toolSuperior.Parent := frm;

  { Botão Back }
  btn := TButton.Create(frm);
  btn.Align := TAlignLayout.Left;
  btn.Margins.Left := 8;
  btn.StyleLookup := 'backtoolbutton';
  btn.Text := 'Voltar';
  btn.Parent := toolSuperior;

  WebBrowser := TWebBrowser.Create(frm);
  WebBrowser.Parent := frm;
  WebBrowser.Align := TAlignLayout.Client;

  Evnt := TCloseParentFormHelper.Create;
  btn.OnClick := Evnt.OnClickClose;

  if AExternalURL then
  begin
    tmpFile := StringReplace(APDFFilename, ' ', '%20', [rfReplaceAll]);
    WebBrowser.Navigate('http://' + tmpFile);
  end
  else
    WebBrowser.Navigate('file://' + TPath.Combine(TPath.GetDocumentsPath,
      APDFFilename));

  frm.ShowModal();
end;
{$ENDIF}

end.

 

تم الرد عليه بواسطة (870 نقاط)

اسئلة متعلقة

+1 تصويت
0 إجابة
سُئل يوليو 24، 2019 في تصنيف Delphi بواسطة Amar Gozim (11,220 نقاط) | 48 مشاهدات
+1 تصويت
1 إجابة
سُئل يوليو 22، 2018 في تصنيف Delphi بواسطة Amar Gozim (11,220 نقاط) | 87 مشاهدات
+3 تصويتات
2 إجابة
سُئل يوليو 19، 2018 في تصنيف Delphi بواسطة Amar Gozim (11,220 نقاط) | 148 مشاهدات
0 تصويتات
0 إجابة
سُئل أبريل 12 في تصنيف fmx بواسطة Abdou_System (120 نقاط) | 28 مشاهدات
+1 تصويت
1 إجابة
سُئل فبراير 16 في تصنيف vcl بواسطة Amar Gozim (11,220 نقاط) | 29 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

497 سؤال
752 إجابة
1,417 تعليق
271 مستخدم