Подскажите пожалуйста как устранить ошибку (скрин в приложении) на строке TNetworkState.Create в приложении для OS Android в Delphi 10.3. на телефоне 10-й Андроид.
Процедура такая:
//Поделиться сохранённым файлом
procedure TForm_DB_BOKA_Glavn.ButtonПоделитьсяClick(Sender: TObject);
var
NS: TNetworkState;
begin
NS := TNetworkState.Create;
if not NS.IsConnected then
begin
ShowMessage('Нет подключения к интернету.');
Abort;
end else
begin
if NS.IsWifiConnected then ShowMessage('Подключено через WiFi');
if NS.IsMobileConnected then ShowMessage('Подключено через WWAN');
if FileExists(TPath.GetDownloadsPath+'/Модель_'+ComboBoxВсеМодели.Selected.Text+'.txt') then
begin
ShareFile(TPath.GetDownloadsPath+'/Model_'+ComboBoxВсеМодели.Selected.Text+'.txt', 'Это файл карточки модели '++ComboBoxВсеМодели.Selected.Text);
Application.ProcessMessages;
end else ShowMessage('Файл '+TPath.GetDownloadsPath+'/Model_'+ComboBoxВсеМодели.Selected.Text+'.txt'+' не найден.');
end;
end;
Процедура ShareFile такая:
procedure ShareFile(aFileName, aComment : String);
{$IFDEF ANDROID}
var Intent : JIntent;
uri : Jnet_Uri;
AttachmentFile: JFile;
S : String;
{$ENDIF ANDROID}
begin
{$IFDEF ANDROID}
Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
S:=TPath.GetFileName(aFileName);
Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(aComment));
Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(aComment));
AttachmentFile := TJFile.JavaClass.init(StringToJString(aFileName));
Uri := TJnet_Uri.JavaClass.fromFile(AttachmentFile);
Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((Uri as ILocalObject).GetObjectID));
Intent.setType(StringToJString('text/plain'));
// Intent.setDataAndType(StrToJURI('file:' + TPath.Combine(TPath.GetSharedDownloadsPath, 'picture.png')), StringToJString ('image/png'));
SharedActivity.startActivity(Intent);
{$ENDIF ANDROID}
end;
При этом разрешение к памяти у телефона есть на это приложение. Интересно что в другом моём приложении где те же процедуры всё работает. Но перед тем как это 2-е приложение я запустил после обновления 9-го Андроида на 10-й система спросила сама разрешения а в этом нет. Я вручную разрешал. Может тут дело не в разрешениях???
Вопрос
Олег Киреев
Здравствуйте Уважаемые.
Подскажите пожалуйста как устранить ошибку (скрин в приложении) на строке TNetworkState.Create в приложении для OS Android в Delphi 10.3. на телефоне 10-й Андроид.
Процедура такая:
//Поделиться сохранённым файлом
procedure TForm_DB_BOKA_Glavn.ButtonПоделитьсяClick(Sender: TObject);
var
NS: TNetworkState;
begin
NS := TNetworkState.Create;
if not NS.IsConnected then
begin
ShowMessage('Нет подключения к интернету.');
Abort;
end else
begin
if NS.IsWifiConnected then ShowMessage('Подключено через WiFi');
if NS.IsMobileConnected then ShowMessage('Подключено через WWAN');
if FileExists(TPath.GetDownloadsPath+'/Модель_'+ComboBoxВсеМодели.Selected.Text+'.txt') then
begin
ShareFile(TPath.GetDownloadsPath+'/Model_'+ComboBoxВсеМодели.Selected.Text+'.txt', 'Это файл карточки модели '++ComboBoxВсеМодели.Selected.Text);
Application.ProcessMessages;
end else ShowMessage('Файл '+TPath.GetDownloadsPath+'/Model_'+ComboBoxВсеМодели.Selected.Text+'.txt'+' не найден.');
end;
end;
Процедура ShareFile такая:
procedure ShareFile(aFileName, aComment : String);
{$IFDEF ANDROID}
var Intent : JIntent;
uri : Jnet_Uri;
AttachmentFile: JFile;
S : String;
{$ENDIF ANDROID}
begin
{$IFDEF ANDROID}
Intent := TJIntent.Create;
Intent.setAction(TJIntent.JavaClass.ACTION_SEND);
Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
S:=TPath.GetFileName(aFileName);
Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(aComment));
Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(aComment));
AttachmentFile := TJFile.JavaClass.init(StringToJString(aFileName));
Uri := TJnet_Uri.JavaClass.fromFile(AttachmentFile);
Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((Uri as ILocalObject).GetObjectID));
Intent.setType(StringToJString('text/plain'));
// Intent.setDataAndType(StrToJURI('file:' + TPath.Combine(TPath.GetSharedDownloadsPath, 'picture.png')), StringToJString ('image/png'));
SharedActivity.startActivity(Intent);
{$ENDIF ANDROID}
end;
При этом разрешение к памяти у телефона есть на это приложение. Интересно что в другом моём приложении где те же процедуры всё работает. Но перед тем как это 2-е приложение я запустил после обновления 9-го Андроида на 10-й система спросила сама разрешения а в этом нет. Я вручную разрешал. Может тут дело не в разрешениях???
Ссылка на комментарий
0 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.