如何给自己的app添加分享到有道云笔记这样的功能 - xing_star

xing-star 2021-08-16 原文


如何给自己的app添加分享到有道云笔记这样的功能

文章同步自http://javaexception.com/archives/34

如何给自己的app添加分享到有道云笔记这样的功能

问题:

在之前的一个开源笔记类项目Leanote中,有个用户反馈想增加类似分享到有道云笔记的功能,这样就可以把自己小米便签或者是其他记事本的内容分享到Leanote中。

解决办法:

那么如何实现呢。需要有一个Activity来接受传递过来的内容,同时也需要在androidManifest.xml文件中配置。

<activity
android:name=".ui.edit.NoteEditActivity"
android:screenOrientation="portrait"
android:configChanges="uiMode|keyboard|keyboardHidden"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>

接着我们需要考虑的是如何获取传递过来的内容。先提供一个处理Intent里面内容的工具类。

/**
 * Utilities for creating a share intent
 */
public class ShareUtils {
 
    /**
     * Create intent with subject and body
     *
     * @param subject
     * @param body
     * @return intent
     */
    public static Intent create(final CharSequence subject,
                                final CharSequence body) {
        Intent intent = new Intent(ACTION_SEND);
        intent.setType("text/plain");
        if (!TextUtils.isEmpty(subject))
            intent.putExtra(EXTRA_SUBJECT, subject);
        intent.putExtra(EXTRA_TEXT, body);
        return intent;
    }
 
    /**
     * Get body from intent
     *
     * @param intent
     * @return body
     */
    public static String getBody(final Intent intent) {
        return intent != null ? intent.getStringExtra(EXTRA_TEXT) : null;
    }
 
    /**
     * Get subject from intent
     *
     * @param intent
     * @return subject
     */
    public static String getSubject(final Intent intent) {
        return intent != null ? intent.getStringExtra(EXTRA_SUBJECT) : null;
    }
}

 

获取分享的内容,并在当前页面展示

public Note getNoteFromShareIntent() {
    Note newNote = new Note();
    Account account = Account.getCurrent();
    newNote.setUserId(account.getUserId());
    newNote.setTitle(ShareUtils.getSubject(getIntent()));
    newNote.setContent(ShareUtils.getBody(getIntent()));
    Notebook notebook;
    notebook = NotebookDataStore.getRecentNoteBook(account.getUserId());
    if (notebook != null) {
        newNote.setNoteBookId(notebook.getNotebookId());
    } else {
        Exception exception = new IllegalStateException("notebook is null");
        CrashReport.postCatchedException(exception);
    }
    newNote.setIsMarkDown(account.getDefaultEditor() == Account.EDITOR_MARKDOWN);
    newNote.save();
    return newNote;
}

总结一下,就是需要在androidManifest.xml里面配置支持text/plain的特定intent-filter,然后有个Activity与之对应,他来接收数据,接着就是获取到接收的数据,结合具体的业务逻辑做后续的处理,如保存到本地数据库,或者是展示在当前页面等。

看到了吧,这并没有想象中的那么难。

发表于
2019-04-24 10:42 
xing_star 
阅读(755
评论(0
编辑 
收藏 
举报

 

版权声明:本文为xing-star原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xing-star/p/10761018.html

如何给自己的app添加分享到有道云笔记这样的功能 - xing_star的更多相关文章

  1. 用markdown + html写一封简历

    0. 前言 1. 阶段1 – 确定需要几个模块 2. 阶段2 – 使用纯文字填充简历 […]...

  2. JAVA 小程序 – android开发实例

    JAVA 小程序 写了一个两个下午,终于写完了,这些天一直在写自己的java web项目,所以没什么时间去写这 […]...

  3. 如何下载如腾讯课堂等PC网页视频的方法 – 淳_风u云

    如何下载如腾讯课堂等PC网页视频的方法 其实网上的教程有很多,实际也没那么复杂。 一、用插件法 方法是用插件, […]...

  4. 用分离、附加的方式实现sql server数据库的备份和还原 – 小强斋太

    用分离、附加的方式实现sql server数据库的备份和还原 用分离、附加的方式实现sql server数据库 […]...

  5. JS 星号 * 处理手机号和名称

    有时候为了不让用户看到手机号和姓名,需要针对手机号和姓名进行 * 处理。 比如:   13140121671  […]...

  6. mac在线恢复教程 – Lves Li

    mac在线恢复教程 2013-11-06 19:55  Lves Li  阅读(982)  评论(0)  编辑 […]...

  7. 【SQL】- 基础知识梳理(四) – 存储过程

    存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户 […]...

  8. 【PS扩展面板】PS黑作坊_美妆大师 – 开发小飞

    【PS扩展面板】PS黑作坊_美妆大师 1、插件说明 PS黑作坊美妆大师几乎涵盖了所有磨皮插件滤镜的功能,是影楼 […]...

随机推荐

  1. 从零开始实现放置游戏(前言)

      笔者从小学就开始打电脑游戏,大学选择软件工程专业,毕业后进入软件行业,涉及电商、金融等领域,却一直未曾开发 […]...

  2. 1168画矩形

    描述 根据参数,画出矩形。输入四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不 […]...

  3. TextCNN

    什么是TextCNN Yoon Kim在论文(2014 EMNLP) Convolutional Neural […]...

  4. 开篇:冒险岛2开放平台需求设计

       我有一个梦想,这个梦想就是做出属于自己的网站,而冒险岛这个游戏是实现我梦想的最好的平台 —B […]...

  5. 双目视觉的摄像头选择问题

        在研究双目视觉研究过程中,遇到了许许多多的问题,在最初入门的时候,摄像头的选择问题就成了我最头疼的问题 […]...

  6. 【AS3 Coder】任务九:游戏新手引导的制作原理(下)

    在上一篇教程中,我们了解了一套我自创的新手引导管理框架的使用原理,那么在本篇教程中,我们将考虑新手引导制作中可 […]...

  7. 2020DevOps状态报告——变更管理

    2020DevOps状态报告——变更管理 如何利用DevOps原则将变更管理转化为有效的、使能的流程? 如果你 […]...

  8. ASP.NET MVC5 + EF6 + LayUI实战教程,通用后台管理系统框架(3)

    前言 本节将我们自己的CSS样式替换系统自带的 开始搭建 将脚本文件夹删掉,将内容文件夹里的内容删掉,将我们自 […]...

展开目录

目录导航