安卓APP調(diào)用WPS打開(kāi)Office文件并返回APP

原創(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
最后,祝你生活愉快!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容