文章同步自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与之对应,他来接收数据,接着就是获取到接收的数据,结合具体的业务逻辑做后续的处理,如保存到本地数据库,或者是展示在当前页面等。

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

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

  1. 零行代码为App添加异常加载占位图

    前文提要 近期准备重构项目,需要重写一些通用模块,正巧需要设置App异常加载占位图的问题,心血来潮设想是否可以零行代码解决此问题,特在此分享实现思路. 思路分享 对于App占位图,通常需要考虑的控件有 ...

  2. 零行代码为 App 添加异常加载占位图

    前文提要 近期准备重构项目,需要重写一些通用模块,正巧需要设置App异常加载占位图的问题,心血来潮设想是否可以零行代码解决此问题,特在此分享实现思路. 思路分享 对于App占位图,通常需要考虑的控件有 ...

  3. Android经典项目开发之天气APP实例分享

    原文:Android经典项目开发之天气APP实例分享 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/mzc186/article/details/5 ...

  4. android 从其他app接收分享的内容

    Receiving Content from Other Apps[从其他app接收分享的内容] 就像你的程序能够发送数据到其他程序一样,其他程序也能够简单的接收发送过来的数据.需要考虑的是用户与你的 ...

  5. Android原生APP内分享

    Android原生APP内分享,可实现数据分享以及assets文件夹分享及私有文件分享 项目地址:https://github.com/json-pu/AndroidAppShare.git

  6. hexo next主题为博客添加分享功能

    title: hexo next主题为博客添加分享功能 date: 2018-01-06 20:20:02 tags: [hexo博客, 博客配置] categories: hexo next主题配置 ...

  7. 为你的MacOS App添加开机自启动(Swift)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/52104828 ...

  8. 浅谈APP的分享功能,有时候社交裂变形式比内容更“重要”

    回顾2018年的移动互联网,“社交裂变”“下沉”等成为年度关键词.一方面我们可以看到社交裂变助推用户增长,另一方面我们也看到了以拼多多.趣头条为代表的互联网企业对于社交裂变模式表现出的空前关注度.作为 ...

  9. 首次给app添加页面

    app添加页面的步骤(含泪史,都是自己摸索出来的) 1.通过页面上的文字,利用搜索功能找到这个页面 2.根据这个页面找到这个页面的action(注意了,这个R.layout.后面这个是页面文件名字) ...

随机推荐

  1. 如何使用 toml 配置 SpaceVim

    配置 SpaceVim 主要包括以下几个内容: 设置 SpaceVim 选项 启动/禁用模块 添加自定义插件 添加自定义按键映射以及插件配置 设置SpaceVim选项 原先,在 init.vim 文件 ...

  2. mysql explain中key_len值的说明

    在mysql 的explain的输出中,有个key_len的列,其数据是如何计算的呢? 在看到了淘宝的dba以前发布的博客后,我在mysql 5.6上操作一番,了解了一点. 环境准备 – 创建表. u ...

  3. DropZone(文件上传插件)

    1. html文件 dropzone的原理是模拟表单来上传文件,html中的元素有多重形式. 可以建立一个form表单: <form id="dropz" action=&q ...

  4. mysql可视化工具下载地址2017.6.27

    https://www.baidu.com/s?tn=90117497_hao_pg&usm=1&wd=navicat+for+mysql&ie=utf-8&rsv_r ...

  5. React-----input中的value不更新 - 提问

    原文:http://blog.csdn.net/lihongxun945/article/details/46730835 表单是前端非常重要的一块内容,并且往往包含了错误校验等逻辑. React对表 ...

  6. Python集合set

    集合 set 集合是无序的 集合的值是唯一的 求两个集合的关系: list1 = [1,4,5,7,3,6,7,9] list2 = set([2,6,0,66,22,8,4]) list3 = se ...

  7. 转载:python + requests实现的接口自动化框架详细教程

    转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由 ...

  8. php一些需要注意的点

    1,类的自动加载: spl_autoload_register(function ($class_name) { require_once $class_name . '.php';}); autol ...

  9. objectid.go源码阅读

    )) } // func), ), ), ), ])<<])<<)]) } //获取])<<])<<])<<]), //转化为十进制的int ...

  10. BZOJ_4590_[Shoi2015]自动刷题机_二分答案

    BZOJ_4590_[Shoi2015]自动刷题机_二分答案 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题 ...