如何给自己的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. [Android Pro] Android P版本 新功能介绍和兼容性处理(三)Android Studio 3.0 ~ 3.2 其他特性

    cp : https://blog.csdn.net/yi_master/article/details/80 […]...

  2. 深入谈谈TFT LCD的使用心得 .

    最近一段时间工作上一直在使用TFT LCD,主要是3、5寸LCD,以SAMSUNG的LTV350QV及其一些台 […]...

  3. window环境下使用filezilla server搭建ftp服务器 – LinuxPanda

    window环境下使用filezilla server搭建ftp服务器 前言 在做项目的时候,需要提供ftp服 […]...

  4. VS Code 上那些沙雕插件 – 逆锋起笔

    VS Code 上那些沙雕插件 本文整理自网络,作者不详,如有侵权,则可删除。 VS Code 作为前端最牛逼 […]...

  5. 通俗易懂–循环神经网络(RNN)的网络结构!(TensorFlow实现) – mantch

    通俗易懂–循环神经网络(RNN)的网络结构!(TensorFlow实现) 文章目录1. 什么是RN […]...

  6. C#使用FileSystemWatcher来监控指定文件夹,并使用TCP/IP协议通过Socket发送到另外指定文件夹 – 踏平扶桑

    C#使用FileSystemWatcher来监控指定文件夹,并使用TCP/IP协议通过Socket发送到另外指 […]...

  7. windows server 2008 x64 企业版 上部署 exchange 2007 Edi + sp1 (转)

    windows server 2008 x64 企业版 上部署 exchange 2007 Edi + sp1 […]...

  8. 受欢迎的7个前端UI框架 – KyleLjc

    受欢迎的7个前端UI框架 源文: https://www.sohu.com/a/304074198_12007 […]...

随机推荐

  1. Robot Framework -002 在Windows10上的安装

    机器人框架是使用Python实现的,并且还支持Jython(JVM),IronPython(.NET)和PyP […]...

  2. web页面接入QQ客服的方法

    在做微信二次开发的时候或者手机版网页的时候有人想在接qq客服,下面我就分享一下具体操作:   1,准备一个QQ […]...

  3. linux系统安装Oracle11g详细步骤

      快速安装指引 ■Reviewing Information About This Guide■Loggin […]...

  4. 轻松打造百万蜘蛛池

    PS一条:seo老鸟请绕道哦 相信看到标题的朋友已经情不自禁的点击进来了,那么本博主自然不会让你失望! 进入主 […]...

  5. 内存条分类及规格参数介绍

    内存可以根据储存能力与电源的关系可以分为以下两类: 易失性存储器(Volatile memory)指的是当电源 […]...

  6. Python+Selenuim测试网站,只能打开Firefox浏览器却不能打开网页的解决方法

    最开始我使用的Selenium版本为2.48,Firefox版本为37,自动化打开网站的时候,可以正常打开。 […]...

  7. yolo模型的使用

    老板需要做目标检测的项目于是学习了一下yolo的使用,在这里贴一些使用过程中的心得,方便日后查阅和交流   相 […]...

  8. iOS技巧:移除/添加导航栏黑边(iOS13适配)

    “我正在参加《掘金·帆船计划》”介绍背景:移除导航栏下方的黑色边框在iOS15中不起作用原因:必须使用iOS13之后的API UINavigationBar外观 设置生效UIKIT_EXTERN API_AVAILABLE(ios(...

展开目录

目录导航