【发布时间】:2019-01-20 02:57:18
【问题描述】:
我有一个可以通过 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 类,我在其中编写了下面提到的名为 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 文件中编辑的内容。
它是否需要应用程序或任何其他方式的任何额外许可?提前致谢!
【问题讨论】:
标签: android cordova pdf cordova-plugins phonegap