原創(chuàng)文章:轉(zhuǎn)載請(qǐng)注明出處
安卓APP調(diào)用WPS打開(kāi)Office文件并返回APP功能實(shí)現(xiàn)(附wps工具)
在某些app(如OA系統(tǒng)app)開(kāi)發(fā)工程中,往往會(huì)遇到編輯Office文檔的需求,而我們一般采取最為有效的方法便是調(diào)用三方的專(zhuān)業(yè)Office軟件。
基礎(chǔ)功能:app跳轉(zhuǎn)WPS打開(kāi)Office文檔
- 檢查是否已安裝WPS
private boolean checkWps(){
Intent intent = getPackageManager().getLaunchIntentForPackage("cn.wps.moffice_eng");//WPS個(gè)人版的包名
if (intent == null) {
return false;
} else {
return true;
}
}
- 打開(kāi)文檔
Intent intent = mActivity.getPackageManager().getLaunchIntentForPackage( "cn.wps.moffice_eng");
Bundle bundle = new Bundle();
intent.setData(Uri.parse(fileUrl));//這里采用傳入文檔的在線地址進(jìn)行打開(kāi),免除下載的步驟,也不需要判斷安卓版本號(hào)
intent.putExtras(bundle);
mActivity.startActivity(intent);
進(jìn)階功能:設(shè)置文檔打開(kāi)模式,使用廣播進(jìn)行WPS操作監(jiān)聽(tīng)
- 創(chuàng)建接口與廣播
// 回調(diào)接口
public interface WpsInterface {
void doRequest(String filePath);//filePath為文檔的保存路徑
void doFinish();
}
// 廣播接收器
private class WpsCloseListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
if (intent.getAction().equals("cn.wps.moffice.file.save")) {
String fileSavePath = intent.getExtras().getString(Define.SAVE_PATH);
if(canWrite) {
wpsInterface.doRequest(fileSavePath);// 保存回調(diào)
}
} else if (intent.getAction().equals("cn.wps.moffice.file.close")||
intent.getAction().equals("com.kingsoft.writer.back.key.down")) {
wpsInterface.doFinish();// 關(guān)閉,返回回調(diào)
mActivity.unregisterReceiver(wpsCloseListener);//注銷(xiāo)廣播
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
- 注冊(cè)廣播
public void initWpsCloseListener() {
wpsCloseListener = new WpsCloseListener();
IntentFilter filter = new IntentFilter(Define.OFFICE_SERVICE_ACTION);
filter.addAction("com.kingsoft.writer.back.key.down");//按下返回鍵
filter.addAction("com.kingsoft.writer.home.key.down");//按下home鍵
filter.addAction("cn.wps.moffice.file.save");//保存
filter.addAction("cn.wps.moffice.file.close");//關(guān)閉
mActivity.registerReceiver(wpsCloseListener,filter);//注冊(cè)廣播
}
- 打開(kāi)文檔
public void openDoc() {
Bundle bundle = new Bundle();
if (canWrite) {// 判斷是否可以編輯文檔
bundle.putString("OpenMode", "Normal");// 一般模式
} else {
bundle.putString("OpenMode", "ReadOnly");// 只讀模式
}
bundle.putBoolean("SendSaveBroad", true);// 關(guān)閉保存時(shí)是否發(fā)送廣播
bundle.putBoolean("SendCloseBroad", true);// 關(guān)閉文件時(shí)是否發(fā)送廣播
bundle.putBoolean("HomeKeyDown", true);// 按下Home鍵
bundle.putBoolean("BackKeyDown", true);// 按下Back鍵
bundle.putBoolean("IsShowView", false);// 是否顯示wps界面
bundle.putBoolean("AutoJump", true);// //第三方打開(kāi)文件時(shí)是否自動(dòng)跳轉(zhuǎn)
//設(shè)置廣播
bundle.putString("ThirdPackage", mActivity.getPackageName());
//第三方應(yīng)用的包名,用于對(duì)改應(yīng)用合法性的驗(yàn)證
//bundle.putBoolean(Define.CLEAR_FILE, true);
//關(guān)閉后刪除打開(kāi)文件
intent.setAction(android.content.Intent.ACTION_MAIN);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
intent.setData(Uri.parse(fileUrl));
intent.putExtras(bundle);
mActivity.startActivity(intent);
}
- 返回到你的app頁(yè)面
*為了適配大部分機(jī)型而采用以下方式將你的app從后臺(tái)拉回前臺(tái),需要將你的跳轉(zhuǎn)前(棧頂)activity啟動(dòng)模式設(shè)置為singleTask;
public void appBack() {
try {
//獲取ActivityManager
ActivityManager mAm = (ActivityManager) mActivity.getSystemService(Context.ACTIVITY_SERVICE);
//獲得當(dāng)前運(yùn)行的task
List<ActivityManager.RunningTaskInfo> taskList = mAm.getRunningTasks(1);
for (ActivityManager.RunningTaskInfo rti : taskList) {
if (rti.topActivity.getPackageName().equals(mActivity.getPackageName())) {
mAm.moveTaskToFront(rti.id, ActivityManager.MOVE_TASK_WITH_HOME);
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
WPS實(shí)現(xiàn)文件打開(kāi)后返回APP Demo
希望此篇文章能為你帶來(lái)幫助!如果能為你解決問(wèn)題,勞煩點(diǎn)一波愛(ài)心QAQ
聯(lián)系QQ:1018895572
最后,祝你生活愉快!