Импорт PDF из Adobe
Я хочу сделать следующее в студии andriod
Пользователь откроет свой почтовый клиент и нажмет на превью в PDF. Он открывает файл в Adobe Reader.
Пользователь делает комментарии в Adobe, а когда закончите, нажмите поделиться
Показывается мое приложение andriod, и пользователи выбирают мое приложение
Мое приложение 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>