如何给自己的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. java体系结构概览 – 伪善者ql

    java体系结构概览 java体系结构包括四个方面: java程序设计语言 java class文件格式 ja […]...

  2. [源码解析] 深度学习分布式训练框架 horovod (2) — 从使用者角度切入

    Horovod 是Uber于2017年发布的一个易于使用的高性能的分布式训练框架,在业界得到了广泛应用。本系列 […]...

  3. XDK html development — Cross Domain Request

        Two days ago, I came across a problem. After buildi […]...

  4. 测试报告模板 – fengdashu

    测试报告模板     作为一个曾经是测试萌新的我,在首次接收到一个任务时总有一种忐忑慌张激动紧张期望的复杂情绪 […]...

  5. premiere:字幕添加方式 – Indian_Mysore

    premiere:字幕添加方式 方法1 ctrl+t 方法2 方法3 方法4 方法5...

  6. httpservletrequest 详解 – 王大王

    httpservletrequest 详解 公共接口类HttpServletRequest继承自Servlet […]...

  7. 微信新功能,最牛的不是“斗图”! – 程序新视界

    微信新功能,最牛的不是“斗图”! 如果说有一个APP的版本更新能够上热搜,那么微信的更新必定属于其中之一。昨天 […]...

  8. kindle看扫描版pdf的解决办法 – nigaopeng

    kindle看扫描版pdf的解决办法 2018-06-02 17:07  nigaopeng  阅读(2099 […]...

随机推荐

  1. Kubernetes集群搭建核心步骤

    目录 前言 一、所有节点安装docker 二、所有节点安装kubeadm 三、安装master节点 四、部署网 […]...

  2. CD4051的切换时间

    CD4051:1 2 4 5 12 13 14 15  8个选择IO输入/输出端;3:I/O6:片选低电平有效 […]...

  3. Flask源码复习之路由

    构建路由规则 一个 web 应用不同的路径会有不同的处理函数,路由就是根据请求的 URL 找到对应处理函数的过 […]...

  4. 使用.NET Core 2.1的Azure WebJobs

    WebJobs不是Azure和.NET中的新事物。 Visual Studio 2017中甚至还有一个默认的A […]...

  5. 形象易懂讲解算法I——小波变换

    https://zhuanlan.zhihu.com/p/22450818?refer=dong5   最早发 […]...

  6. 网站配置https(腾讯云域名操作)

    我们都知道http协议是超文本传输协议,早期的网站使用的都是http,但是并不安全,数据在传输过程中容易被拦截 […]...

  7. Python-demo(photo)

    import osimport urllib import requests#import wximport […]...

  8. JAVA小游戏代码(剪刀石头布)

     /*     * 创建一个类Game,石头,剪刀,布的游戏。     */     public class […]...

展开目录

目录导航