Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 1 / 2
Регистрация: 04.02.2022
Сообщений: 7

Не получается сделать выбор pdf файла через системное окно

14.01.2024, 22:37. Показов 969. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В данной активити я получаю uri pdf файла, а затем запускаю другую, которая должна его отобразить
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package com.aboba.reader;
 
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
 
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
 
public class FavoriteActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_favorite);
 
        // Определите ListView в макете
        //       ListView fileListView = findViewById(R.id.fileListView);
 
        // Укажите директорию, которую вы хотите просканировать
 // Пример пути к директории
 
//        File directory = new File(getFilesDir() + "/assets");
//        if (directory.exists() && directory.isDirectory()) {
//            String[] files = directory.list();
//            if (files != null) {
//                ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, files);
//                fileListView.setAdapter(adapter);
//            }
//        }
    }
 
 
    ActivityResultLauncher<Intent> sActivityResultLauncher = registerForActivityResult(
            new ActivityResultContracts.StartActivityForResult(),
            new ActivityResultCallback<ActivityResult>() {
                @Override
                public void onActivityResult(ActivityResult result) {
                    if (result.getResultCode() == Activity.RESULT_OK) {
                        Intent data = result.getData();
                        Uri uri = data.getData();
                        String mimeType = getContentResolver().getType(uri);
                        Toast toast = Toast.makeText(getApplicationContext(), mimeType, Toast.LENGTH_SHORT);
                        toast.show();
                        Intent intent = new Intent(FavoriteActivity.this, WatchActivity.class); // Используйте контекст View v для создания Intent
                        intent.putExtra("uri", uri.toString());
                        startActivity(intent); // Запускаем WatchActivity
                    }
                }
            }
 
    );
    public void openFileDialog(View view){
        Intent data = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        data.setType("*/*");
        data = Intent.createChooser(data, "Выбери файл");
        sActivityResultLauncher.launch(data);
    }
    public void goToSearchActivity(View v){
        Intent intent = new Intent(this, SearchActivity.class);
        startActivity(intent);
 
    }
    public void goToUploadActivity(View v){
        Intent intent = new Intent(this, UploadActivity.class);
        startActivity(intent);
 
    }
    public void goToSettingsActivity(View v){
        Intent intent = new Intent(this, SettingsActivity.class);
        startActivity(intent);
 
    }
}
вот код WatchActivity, которая должна отобразить сам pdf файл
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package com.aboba.reader;
 
 
import android.content.ContentResolver;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.pdf.PdfRenderer;
import android.net.Uri;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.widget.ImageView;
import android.widget.Toast;
 
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
 
public class WatchActivity extends AppCompatActivity {
    private PdfRenderer renderer;
    private Bitmap combineBitmaps(Bitmap bitmap1, Bitmap bitmap2) {
        int width = Math.max(bitmap1.getWidth(), bitmap2.getWidth());
        int height = bitmap1.getHeight() + bitmap2.getHeight();
        Bitmap combinedBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
 
        Canvas canvas = new Canvas(combinedBitmap);
        canvas.drawBitmap(bitmap1, 0, 0, null);
        canvas.drawBitmap(bitmap2, 0, bitmap1.getHeight(), null);
 
        return combinedBitmap;
    }
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_watch);
        ImageView pdfImageView = findViewById(R.id.imageView);
 
 
        AssetManager assetManager = getAssets();
        Bitmap finalBitmap = null;
            try {
 
// Получаем Intent, который запустил эту активность
                Intent intent = getIntent();
 
// Получаем Uri из Intent
                String uriString = intent.getStringExtra("uri");
                Uri uri = Uri.parse(uriString);
//              AssetFileDescriptor blah1 = getAssets().openFd(uriString);
                FileInputStream blah = openFileInput(uriString);
                Toast toast = Toast.makeText(getApplicationContext(), uriString, Toast.LENGTH_SHORT);
                toast.show();
                ContentResolver contentResolver = getContentResolver();
 
                // Открываем InputStream для файла с указанным Uri
                InputStream inputStream = contentResolver.openInputStream(uri);
 
                // Создаем ParcelFileDescriptor из InputStream
                ParcelFileDescriptor pfd = ParcelFileDescriptor.dup(((FileInputStream) inputStream).getFD());
 
                renderer = new PdfRenderer(pfd);
            }catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setMessage(e.getMessage());
                builder.show();
            }
 
            try {
                final int pageCount = renderer.getPageCount();
 
 
            for (int i = 0; i < pageCount; i++) {
                PdfRenderer.Page page = renderer.openPage(i);
 
                // Создание Bitmap для отображения страницы
                Bitmap pageBitmap = Bitmap.createBitmap(page.getWidth(), page.getHeight(), Bitmap.Config.ARGB_8888);
 
                // Рендеринг страницы
                page.render(pageBitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
 
                // Закрытие страницы
                page.close();
 
                if (finalBitmap == null) {
                    finalBitmap = pageBitmap;
                } else {
                    // Объединение всех страниц в один Bitmap
                    finalBitmap = combineBitmaps(finalBitmap, pageBitmap);
                }
            }
            }catch (Exception e){
                e.printStackTrace();
                Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setMessage(e.getMessage());
                builder.show();
            }
 
        // Установите итоговый Bitmap в ImageView
        pdfImageView.setImageBitmap(finalBitmap);
 
 
        }
    }
при запуске пишет, что renderer.getPageCount() получает пустой объект и, что file content...... contains a path separator

извините если оффтоп, не нашел куда про android писать
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.01.2024, 22:37
Ответы с готовыми решениями:

авторизация,через системное окно авторизации windows
Всем доброго времени суток. Есть сайт с которого мне необходимо получить данные, проблема заключается в том, что авторизация происходит...

Как сделать, чтобы файл pdf открывался через acrobat, а не через браузер?
Всем привет! Подскажите пожалуйста, как сделать, чтобы ссылка которая находится у меня на сайте, открывала текстовый файл PDF , через...

Не получается Посылка файла с Веб сайта pdf,xls клиенту на браузер IE
Доброго времени суток всем. Я новенький в ASP.NET и мне нужна помощь. На одной из страниц сайта существует Веб контроль с помощью...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.01.2024, 22:37
Помогаю со студенческими работами здесь

Не получается сделать окно некликабельным
Доброе что-то вам, господа. Подскажите как сделать окно видимым, и при этом некликабельным. Есть программа, которая должна висеть поверх...

Передача PDF Файла в ДО через COM
Процедура ОтправкаФайла(PDFФайл, ИФайла) //потом перенести выше v83_Com = Новый COMObject(&quot;v83.ComConnector&quot;); ...

Выбор каталога через диалоговое окно
Как можно реализовать, чтобы пользователь мог выбрать каталог на локальном компьютере? Для выбора файла можно использовать &lt;input...

Выбор изображения через модальное окно
Доброго дня всем! Есть выбор изображений из каталалога, файл index.php: &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot;...

Выбор изображения через модальное окно
Доброго дня! я в js не силен, делаю сайт на php, нужно сделать выбор изображения из каталога через js, что бы после выбора оно вывелось на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru