Импорт PDF из Adobe

Я хочу сделать следующее в студии andriod

  1. Пользователь откроет свой почтовый клиент и нажмет на превью в PDF. Он открывает файл в Adobe Reader.

  2. Пользователь делает комментарии в Adobe, а когда закончите, нажмите поделиться

  3. Показывается мое приложение andriod, и пользователи выбирают мое приложение

  4. Мое приложение andriod получает PDF и сохраняет его на моем сервере.

У меня есть часть 1,2,3, но не 4,5. Я понимаю, что вы не можете получить доступ к хранилищу приложений, но постер опубликовал это, но я не уверен, как это использовать?

2 ответа

Решение
public class savepdf extends ActionBarActivity {
    static final int REQUEST_IMAGE_OPEN = 1;
    private static final int WRITE_REQUEST_CODE = 43;
    private Uri mData;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_savepdf);

        // Get intent, action and MIME type
        Intent intent = getIntent();
        String action = intent.getAction();
        String type = intent.getType();

        if (Intent.ACTION_SEND.equals(action) && type != null) {
            if ("application/pdf".equals(type)) {
                handlePDF(intent);
            }
        } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
            if (type.startsWith("application/pdf")) {
                // Handle multiple pdfs being sent
            }
        } else {
            // Handle other intents, such as being started from the home screen
        }
    }

    void handlePDF(Intent intent) {
        Uri pdfUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
        if (pdfUri != null) {
            //savefile(pdfUri);

            String sourceFilename= pdfUri.getPath();
            String destinationFilename = android.os.Environment.getExternalStorageDirectory().getPath()+File.separatorChar+"abc.pdf";

            BufferedInputStream bis = null;
            BufferedOutputStream bos = null;

            try {
                bis = new BufferedInputStream(new FileInputStream(sourceFilename));
                bos = new BufferedOutputStream(new FileOutputStream(destinationFilename, false));
                byte[] buf = new byte[1024];
                bis.read(buf);
                do {
                    bos.write(buf);
                } while(bis.read(buf) != -1);
            } catch (IOException e) {

            } finally {
                try {
                    if (bis != null) bis.close();
                    if (bos != null) bos.close();
                } catch (IOException e) {

                }
            }















            // TODO: Use your server-side here to save.

        }







       }

Чтобы получить PDF, вам нужно создать действие для этого варианта использования, которое прослушивает эти "общие" намерения.

ShareActivity.java

void onCreate (Bundle savedInstanceState) {

    // Get intent, action and MIME type
    Intent intent = getIntent();
    String action = intent.getAction();
    String type = intent.getType();

    if (Intent.ACTION_SEND.equals(action) && type != null) {
        if ("application/pdf".equals(type)) {
            handlePDF(intent);
        } 
    } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {
        if (type.startsWith("application/pdf")) {
           // Handle multiple pdfs being sent
        }
    } else {
        // Handle other intents, such as being started from the home screen
    }
}


void handlePDF(Intent intent) {
    Uri pdfUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
    if (pdfUri != null) {

        // TODO: Use your server-side here to save. 

    }
}

А затем добавьте это в свой файл AndroidManifest.xml, чтобы Android знал, какую деятельность следует выполнять, когда он выбирает ваше приложение для обмена:

<activity android:name=".ui.ShareActivity" >
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="application/pdf" />
    </intent-filter>
</activity>
Другие вопросы по тегам