Delphi 11 编写 Android 12 接收共享文件内容

要编写一个可以接收共享文件的 Android 应用程序,您可以按照以下步骤操作:

  1. 在 Delphi 11 中创建一个新的 Android 应用程序项目。

  2. 添加一个 TButton 组件到主窗体上,并在 OnClick 事件中添加以下代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  Intent: JIntent;
  Uri: Jnet_Uri;
begin
  Intent := TJIntent.Create;
  Intent.setAction(TJIntent.JavaClass.ACTION_GET_CONTENT);
  Intent.setType(StringToJString('*/*'));
  Intent.addCategory(TJIntent.JavaClass.CATEGORY_OPENABLE);
  Intent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);

  if Intent.resolveActivity(SharedActivity.getPackageManager) <> nil then
  begin
    SharedActivity.startActivityForResult(Intent, 0);
  end;
end;

此代码将打开一个文件选择器,并允许用户选择要共享的文件。

  1. 添加以下代码到主窗体的 OnActivityResult 事件中:
procedure TForm1.FormActivityResult(requestCode, resultCode: Integer; Data: JIntent);
var
  Uri: Jnet_Uri;
  ContentResolver: JContentResolver;
  InputStream: JInputStream;
  BufferedReader: JBufferedReader;
  Line: JString;
begin
  if (requestCode = 0) and (resultCode = TJActivity.JavaClass.RESULT_OK) then
  begin
    Uri := Data.getData;
    ContentResolver := SharedActivity.getContentResolver;
    InputStream := ContentResolver.openInputStream(Uri);
    BufferedReader := TJBufferedReader.JavaClass.init(TJInputStreamReader.JavaClass.init(InputStream));
    Line := BufferedReader.readLine;

    // 处理文件内容
    ShowMessage(JStringToString(Line));

    BufferedReader.close;
    InputStream.close;
  end;
end;

此代码将读取并处理用户共享的文件内容。在这个例子中,我们只是显示了文件的第一行。

  1. 编译和运行您的应用程序,并测试文件共享功能。

注意: 在 Android 11 上,需要在 AndroidManifest.xml 文件中添加以下权限声明以允许您的应用程序访问共享文件:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Delphi 11 Android 12 文件共享接收指南

原文地址: https://www.cveoy.top/t/topic/n6AH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录