从 Cordova 使用 Adobe Acrobat 打开 PDF
Open PDF with Adobe Acrobat from Cordova
我有一个可以通过 Adobe Acrobat 编辑的 pdf 文件。当我直接从 Adobe Acrobat 应用程序打开文件并编辑文件时,当我按下后退按钮时,它会自动保存,但是当我使用 Cordova 应用程序打开时,它是使用 Adobe Acrobat 应用程序打开的,我也可以编辑那,但是当按下后退按钮并返回到应用程序并再次从 Cordova 应用程序中点击那个特定的 pdf 文件时,它没有显示编辑的内容(它只发生在 android 7 版本以上,但低于 android 版本 7 它在应用程序中运行良好)。
我使用来自 Cordova 的代码打开文件,
var customPlugin = {
createEvent : function(success, failure, action,arg1) {
cordova.exec(success, // success callback function
failure, // error callback function
'Utils', // mapped to our native Java class
action, // with this action name
[arg1]);
}
}
这里 'Utils' 称为我的 Java class 其中我编写了下面提到的名为 openFile 的函数,
// open the file
private boolean openFile(String fileName, String contentType)
throws JSONException {
File file = new File(fileName);
if (file.exists()) {
try {
Uri path = Uri.fromFile(file);
PackageManager packageManager = this.cordova.getActivity()
.getPackageManager();
String application_id = "com.processdrive.novema";
try {
PackageInfo packageInfo = packageManager.getPackageInfo(
this.cordova.getActivity().getPackageName(), 0);
application_id = packageInfo.packageName;
} catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (Build.VERSION.SDK_INT >= 24) {
path = FileProvider.getUriForFile(this.cordova.getActivity(),
application_id + ".provider",
file);
}
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.setDataAndType(path, contentType);
cordova.getActivity().startActivity(intent);
return true;
} catch (android.content.ActivityNotFoundException e) {
return false;
}
} else {
return false;
}
}
以上代码在 android 7 版本以下按预期工作,但在 android 版本 7 以上它不适用于 PDF 文件中的编辑内容。
是否需要应用程序或任何其他方式的任何额外许可?提前致谢!
经过这么多次点击,我在这里修复了它,
这按预期工作
我有一个可以通过 Adobe Acrobat 编辑的 pdf 文件。当我直接从 Adobe Acrobat 应用程序打开文件并编辑文件时,当我按下后退按钮时,它会自动保存,但是当我使用 Cordova 应用程序打开时,它是使用 Adobe Acrobat 应用程序打开的,我也可以编辑那,但是当按下后退按钮并返回到应用程序并再次从 Cordova 应用程序中点击那个特定的 pdf 文件时,它没有显示编辑的内容(它只发生在 android 7 版本以上,但低于 android 版本 7 它在应用程序中运行良好)。
我使用来自 Cordova 的代码打开文件,
var customPlugin = {
createEvent : function(success, failure, action,arg1) {
cordova.exec(success, // success callback function
failure, // error callback function
'Utils', // mapped to our native Java class
action, // with this action name
[arg1]);
}
}
这里 'Utils' 称为我的 Java class 其中我编写了下面提到的名为 openFile 的函数,
// open the file
private boolean openFile(String fileName, String contentType)
throws JSONException {
File file = new File(fileName);
if (file.exists()) {
try {
Uri path = Uri.fromFile(file);
PackageManager packageManager = this.cordova.getActivity()
.getPackageManager();
String application_id = "com.processdrive.novema";
try {
PackageInfo packageInfo = packageManager.getPackageInfo(
this.cordova.getActivity().getPackageName(), 0);
application_id = packageInfo.packageName;
} catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (Build.VERSION.SDK_INT >= 24) {
path = FileProvider.getUriForFile(this.cordova.getActivity(),
application_id + ".provider",
file);
}
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
intent.setDataAndType(path, contentType);
cordova.getActivity().startActivity(intent);
return true;
} catch (android.content.ActivityNotFoundException e) {
return false;
}
} else {
return false;
}
}
以上代码在 android 7 版本以下按预期工作,但在 android 版本 7 以上它不适用于 PDF 文件中的编辑内容。
是否需要应用程序或任何其他方式的任何额外许可?提前致谢!
经过这么多次点击,我在这里修复了它,
这按预期工作