「安卓开发指南」——(App组件)Intent和Intent过滤器

线上社交/新闻拿到(博客园;微信;映像笔记)

线上社交和音信获得其实是手机令人又爱又恨的效劳。我在前头的《2015-05-12
别让『刷屏刷剧』取代了『阅读观影』》那篇文章里也关乎过那种『刷屏式』的音信得到其实并不曾什么尤其好的效益和获取。

由此,我当入手机上还保存的那上头的行使就只有新浪、微信还有影象笔记了。微信紧如若用来和情侣闲谈,切磋事情……还有就是微信上有些公众号自身直接在看,推送过来的情节对本身个人协助是比较大的。天涯论坛首若是用来打发时间的,刷刷看近年来有如何新鲜事没有。还有就是,虎扑上也有不乏先例值得关怀的事物。有些博客园帐号会推送一些知识方面的干货、或是生活方面的tips,或是某个世界的最新咨询……(eg:女皇C-cup;36氪……),那一个事物拿来探视也依旧不错的。印象笔记则是用来采访那个看到的觉得不错的小说,以供之后参考。

简书、搜狐、今日头条晚报一类的客户端我早已完全从手机上卸载了。那是按照自己个人处境的一个考虑。第一,我个人认为在那类的网站或者app中的阅读内容里,我自己获获得的事物如故个其余。看的更加多的莫过于照旧人家的故事和阅历,而且看了将来往往会有『自己马上也得以这么』的错觉。其它,从知识吸收来说,虎扑一类的网站肯定照旧不会太系统的。以自我个人状况考虑,依旧应该把今日头条作为一个检索器一类的东西,在遇见了难点将来再去探寻他方面列为大神的享用或应对。第二,我个人不难被不相干的作业干扰。比如:打开微博,明明是要搜索A难点,却被主页推送的B难点给吸引住了目光,于是自己就间接点开了难点B,然后按票数高低开端浏览答案,看到美观的答问,我就点个感谢或赞,然后再点开小编的主页,看看ta还有何别的的好好答案……
如此一套流程下来,等我再度想到自己的主旨,呵呵,已经是半小时之后了
所以为了防止自己用手机在刷屏上开销太多时间,今日头条简书等等客户端都间接卸载了。现在貌似都是夜间用微机打开网站看一看,不会再花那么多的日子了。

实质上一开头下载简书今日头条这一类客户端的初衷是为着消磨在半路的小时可能那些零碎的小时。但施行发现,他们不但填满了那个零碎时间,还霸占了很多本人该干正事的时日,如故挺反宾为主的,所以不如直接校勘过来。现在相似零碎时间或者拔取看书之类的。『刷』要尽量缩短。

Intent解决方案

当系统接受到一个隐式的Intent后,会由此action、data、category决定利用哪个app。

Action test

<intent-filter>
    <action android:name="android.intent.action.EDIT" />
    <action android:name="android.intent.action.VIEW" />
    ...
</intent-filter>

Category test

<intent-filter>
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    ...
</intent-filter>

Data test

<intent-filter>
    <data android:mimeType="video/mpeg" android:scheme="http" ... />
    <data android:mimeType="audio/mpeg" android:scheme="http" ... />
    ...
</intent-filter>

听见(iTunes;虾米音乐;喜马拉雅;优酷;新浪)

听到方面的功用,其实听这块儿用的可比多。挤公交的时候,一般就戴个耳机放歌曲听;要求一个针锋相对专注的条件时,可能就戴动圈耳机放纯音乐。其它,个人很欢悦在跑步的时候听讲座之类的。

听歌我现在都用的是系统自带的
iTunes播放。以前一向在用QQ音乐,但立即发觉歌单的排布实在太混乱了。同一首歌可能从区其他地方被下载了四次;然后混杂了无数本身并不希罕的歌。那种混乱对自我略有整理狂倾向的大脑来说实在太悲哀。于是我基本不再用QQ音乐。改用了微机上的新浪云音乐,从那地点下载我喜欢的歌曲,严酷筛选,最后再把留下的导进我的无绳电话机。

还有一个好处则是足以把众多本身要好找到的歌放到手机上听。比如买了专栏,可以把内部的音乐全体导入iTunes。同学或朋友在唱呢里录了歌,也得以下下来导进iTunes听。通过iTunes,仍可以够给协调找的这么些歌添加图片、歌星信息等等,可定制度还蛮高的。用起来很爽快。甚至语音备忘录里的东西都足以拉长到播放列表里听。

而除开iTunes,我手机里听方面的行使还有 虾皮音乐
喜马拉雅。虾米音乐里面全是古典音乐/钢琴曲
之类的纯音乐。我个人不是很喜欢纯音乐与流行歌曲混杂。而iTunes里即使可以将灵魂乐和典故乐分开建立播放列表,但建立了列表之后却并未艺术在列表里搜索歌曲,或是把列表中的歌曲按名称排列。因而,我便决定在iTunes里只放说唱,其他的纯音乐之类的百分之百透过虾米这么些平台来听。

喜马拉雅则是本身用来听讲座之类的App。我现在跑步的时候一般都会用那几个听Yi Zhongtian助教的《品三国》,或者是上个世纪的一部名为《刑警803》的广播剧。那几个首假如让自身在奔跑的经过里不至于感到无聊,可以更好地百折不挠下去。

如上七个利用其实对应了我个人生活里的多少个情境:iTunes里的流行歌曲是用在挤公交、或是一个人走在旅途时解乏、放松心绪用的;虾米里的纯音乐是用在想让自己静一点、或是想感受一些东西的时候;而喜马拉雅里的广播剧或是百家讲坛则是用在奔跑操练时,让自己大脑可以想些其他东西以淡化身体的疲惫

而至于视频软件,紧假设为了存一些友好相比较欣赏的剧或是综艺。这一个的施用频率可能也就一周三回左右。更新的时候把剧缓存下来,然后看了。之后就存在手机了,有时光的时候再挑一些欢欣的简短重复一下。用的最多的是优酷和微博,那俩基本已经可以缓存所有我索要的视频。

Intents and Intent Filters

笔录(Enlight;扫描宝;CS扫描全能王;iAwriter)

笔录涵盖的面很广。用的相比多的是图片方面的,像我手机里就存了8.8G的图形。紧要依然相片、截图和文档扫描。

肖像和截图本身都没关系好说的,都是用系统成效就足以做到的。当然,假如要修图的话,可供选拔的软件非凡多。我眼前用的是Enlight,感觉效果还不易,UI那一个也很对本人的食量。

文档扫描我用三款应用,扫描宝和cs全能王。那里首先提下我何以要用手机来围观文档。因为众多时候,书或文件并不是团结的,我又只要求中间的几页,没有必要买套新的。而用打印机去扫描比较费时费劲。所以我就分选把内部需求的片段用手机扫描下来,再传到电脑上打出来。像扫描宝那个软件,它就可以自动识别出页面部分(70%的情况下那么些效率如故挺准的),然后储存成图片的花样。扫描宝获取的图样往往比一向拍照拍出来的要更合乎再打印。(扫描宝会自动把文档处理成相比清晰的黑白色,照片里的切近于灯光下的颜色。)

另一个行使,cs全能王的效果则是它可以把围观的文档传真出去,对于找不到传真机的我大致是福音。

除却图片记录,文字记录也是相比较常见的一个成效。我在手机上装的是iAwriter。那个软件的有点我早就在《2015-03-23
软件使用之小而精——iAWriter 与
Markdown文本》那篇作品里陈述过许多。当然,那些软件在手机上用最大的独到之处是足以经过iCloud直接和我的微处理器上的iAwriter同步,用手机写完了足以用总计机更是修改,也得以电脑写了直接用在小弟大上……分外便捷。(当然,系统自带的『备忘录』同步也很有益,但备忘录的格式扶助不太便宜。)

除此以外,我前边会挑选在小叔子大上记账。用过『随手记』这么些软件。后来舍弃了。因为觉得这么些软件上边的分类不是很适合本人的其实际情形况。现在自家一般都是在二哥大上用『iAwriter』或者『提示事项』草草地记个金额,晌午统一记录到电脑的excel里。个人认为,excel才是真正的记账神器……

使用Pending Intent

pending
Intent是Intent的一种包装,首要的目标是将权力授予其他程序申请拔取含有的Intent,似乎执行自己的主次一样。主要的用处包蕴:

  • 发Bellamy个Intent,当用户平台接受到你的文告后执行。
  • 发明一(Wissu)个Intent,当用户选拔widget时实施。
  • 发Bellamy(Bellamy)个Intent,在将来规定的光阴内举行。

此间有五个方法:

  1. PendingIntent.getActivity() for an Intent that starts an Activity.
  2. PendingIntent.getService() for an Intent that starts a Service.
  3. PendingIntent.getBroadcast() for a Intent that starts an
    BroadcastReceiver.

实际的pending
Intent官方解释在这儿

常规(Sleep Better;天涯论坛跑步)

Sleep
Better号称是一款可以监测用户睡眠质量的软件。我个人对这么些是不太信任的……但是sleep
better的优越性在于他的闹钟是默许为有半个刻钟的跨度。比如自己设定7:30起床,它的闹钟就会迈出7:00到7:30。

起身困难症下,我平时会在系统下每隔3min就要设定个闹钟,才能确保自己不会起不来……用sleep
better之后,我就无须再去设那么多闹钟了,一般就只必要再用系统闹钟设定一个平安闹钟。比如:我用sleep
better设定了7:30,我就会在系统闹铃里设一个7:35左右右的,以避免意外。

腾讯网跑步是私有认为还相比较好用的一个笔录跑步的软件,定位还相比准,然后它的新浪号也会推送一些陶冶相关的发问,还比较有用。(从前用的runtastic,定位永远是偏的,至少都要隔两条街……)而是,陶冶那种事情,app只是支持记录……关键依旧要和谐能锲而不舍

Intent类型

  • 显式Intent
    显式的Intent类型就是在起步的时候指定组件的项目,这么些貌似适用于自己的App。
  • 隐式Intent
    隐式的Intent类型一般是指指明action,然后传入Intent,适用于非己App。

当您创造一个隐式的Intent对象,安卓系统会通过Intent过滤器查找manifest文件寻找适合的App打开之。若是过多采纳都有action,那么会产出一个会话框,让用户采用想要的顺序。

上面那张图呈现了一个Activity如何通过Intent来打开其余一个Activity。

Intent

注意:为了确保你的app的安全性,请直接利用显式的Intent来拉开一个service,并且永不打开Intent过滤器,因为通过过滤器打开service不可能保险启动者的地方。

其他

地点记录的都是属于绝对用的相比较多的成效。但实在仔细看看手机上的东西,会发觉了下边很多应用都属于
不很常用,但删了不便于的

譬如说:Uber,滴滴打车之类的出游软件。我当然需要打车的外出就不多,不过只要不装那几个,要打车的时候恐怕就唯有傻傻地等在路边。所以这一类的就是属于自我不常用,可是又必须保留的。

相似,那种利用就被自己放在最后两页……要用的时候也无意一页一页去找,用spotlight搜出来就完了。

接过一个隐式的Intent

亟需使用intent-filter,后边有说,就不赘述了,直接上例子:

<activity android:name="MainActivity">
    <!-- This activity is the main entry, should appear in app launcher -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name="ShareActivity">
    <!-- This activity handles "SEND" actions with text data -->
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>
    <!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <action android:name="android.intent.action.SEND_MULTIPLE"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="application/vnd.google.panorama360+jpg"/>
        <data android:mimeType="image/*"/>
        <data android:mimeType="video/*"/>
    </intent-filter>
</activity>

那是一个多意图的过滤器。首个Activity,MainActivity,是app的基本点输入,通过点击图标进入,那一个是由”android.intent.action.MAIN”决定的。
“android.intent.category.LAUNCHER”决定那一个Activity是在系统app启动器中启动的。假设没有点名icon属性,则图标为默认。

其次个Activity,ShareActivity,为了便于共享文本和传媒内容,可以由此ShareActivity从任何app中进入,当然需求通过过滤器。

万一你想唯有团结访问自己的过滤器而不是让其余app访问的话,可以设置exported属性为false。

2015-05-24~27 我怎么用自己的索尼爱立信

上个月的时候,写了一篇小说叫作《2015-04-17 我怎么用自己的Macbook
pro》,感觉写的很爽,挂在简书上收取的很小反馈也还不错。明日于是再开一篇文章来聊天自己自己对此手机使用的有的感想和看法。

自己当下选拔的手机是Motorola6,64G本子。近年来最直观的感触是:幸亏当时买了64G版本,不然感觉完全不够用。(现在自我手机只剩下了3.2G的容量,没有下载任何大型游戏。)

创设一个Intent

Intent对象涵盖了安卓系统决定打开这么些运用的信息并且包括了一部分传递新闻。Intent对象涵盖了以下内容:

Component name:
要开启的机件的名号。显式Intent所不可不的,即使没有该项,则为隐式Intent。对于service必须指定该项。你可以由此setComponent(), setClass(),
setClassName()等函数设置该项的内容,比如com.example.ExampleActivity

Action 一个指定特定的表现的字符串,比如view、pick。
你可以选择setAction()函数来指定Intent的Action,也足以通过以艺术自己定义action:

static final String ACTION_TIMETRAVEL = "com.example.action.TIMETRAVEL";

Data:
URI对象足以看成MIME类型的数目。数据的品种由Intent的Action决定,例如,若是动作是ACTION_EDIT
,数据应涵盖编辑文档的URI。

安装Data
URI要求调用setData()函数,假使只是设置MIME类型,则需求调用setType()函数,即使有需要,你可以同时设置两者通过调用setDataAndType()函数(那种情状下setData()、setType()函数将不起功用)。

Category:那些情节涵盖了附加的新闻,那个音讯须要下一个零件处理有关的信息,不是必需的。那儿有一些例证:

CATEGORY_BROWSABLE
目的Activity允许我通过web浏览器来呈现由链接诸如图像或电子邮件信息中引用的数据来启动。

CATEGORY_LAUNCHER
这么些Activity是系统app启动器中的职分栏里启动的Activity。

你可以透过调用addCategory()函数来指定category。

Extras:键值对封存的音讯。可以透过putExtra()存入,也足以成立一个Bundle对象保存所有的Extra数据,然后通过putExtras()函数插入到Intent中。

Flags :
Intent类中定义了Flags函数作为元数据。那些参数可以禁止安卓系统怎样运行activity并且接下去怎么着执行。相关函数为setFlags()

一个例证:

// Executed in an Activity, so 'this' is the Context
// The fileUrl is a string URL, such as "http://www.example.com/image.png"
Intent downloadIntent = new Intent(this, DownloadService.class);
downloadIntent.setData(Uri.parse(fileUrl));
startService(downloadIntent);

以此事例开启了一个下载服务,并将盛传的fileUrl内容下载下来。

再来一个例子:

// Create the text message with a string
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType(HTTP.PLAIN_TEXT_TYPE); // "text/plain" MIME type

// Verify that the intent will resolve to an activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(sendIntent);
}

以此例子分享了部分文字音讯。

小结一下

手机到底如故一个工具,用它的目的其实是为了方便生活,而不是扭曲干扰生活。(那一点和刷屏式的音信得到软件其实是类似的)

关键的是摸底自己的确要求的效应是怎么样,调整手机让它更好地表明那些意义,而不是让祥和被手机困住……

*从自身的体察来看,我感觉温馨是有ADD的(注意力不足过动症)。(可以百度;或者也可以直接参考Modern
Family里的Phil和Luke))我时时会被不相干的事物所吸引,抓不住重点,做一件事情完了一半又突发奇想跑去做另一件事……\*

考虑到那种景色,我认为越简单的事物对自身越好……所以不管在小叔子大依旧电脑使用上,我都指望利用一种极简的神态:只保留最实惠的。这几个意见我想也贯穿了本人的那两篇文章:《2015-04-17
我怎么用自己的Macbook pro》,《2015-05-24/25/26
我怎么用自己的One plus》。

衷心希望自己个人选取体验和理念的分享可以给诸位带来多少帮衬。

·END·

  • 伊始activity:
    传递Intent,使用startActivity()或者startActivityForResult(),后者可以流传结果。
  • 伊始service:
    传递Intent,使用startService()启动一个不曾用户界面的service,若是service被设计为C/S结构,可以行使bindService()绑定一个service。
  • 传递broadcast:
    可以向其余app传递音信通过Intent对象使用sendBroadcast()、
    sendOrderedBroadcast()或sendStickyBroadcast()。

从电量使用来看

从设置里的电池使用栏来看,过去一周内,我功耗量最多的多个应用及它们分其他耗能量分别为:博客园(18%)、微信(14%)、主屏幕(10%)、优酷(10%)和和讯视频(5%)。其中虎扑微信重倘诺用来社交和取得感兴趣的一些音讯。优酷和腾讯网则基本是娱乐效果。

理所当然,电量使用状态并不可能直接突显我在逐个应用上所消耗的时日。由此,接下去自己将对团结手机的现举办使状态展开一个梳理,来精心回想下:我究竟都用手机干了什么?

强制行使App拔取器

偶然必要不直接打开默许使用,而是每一遍都务求用户选拔打开的app,那可以创设一个createChooser()
Intent对象,然后将其扩散startActivity(),如下:

Intent sendIntent = new Intent(Intent.ACTION_SEND);
...

// Always use string resources for UI text.
// This says something like "Share this photo with"
String title = getResources().getString(R.string.chooser_title);
// Create intent to show the chooser dialog
Intent chooser = Intent.createChooser(sendIntent, title);

// Verify the original intent will resolve to at least one activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(chooser);
}

从容量使用来看

占容量最多的是优酷App,因为我平昔在用优酷看一些英剧(eg:《摩登家庭》、《国务卿女士》)和综艺节目(首如果《奔跑吧兄弟》和《开讲啊》)。加上我又是个略有下载癖好的人,所以爱好的很多集或是期都是直接下好存在手机里的。由此,优酷占用的量相对大一些。

占空间第二多的其实是照片,有8.8GB,我看了一下,存在手机上的相片几乎有3100张左右。这一个图片大致是从二〇一八年以此时候起头累积的(从前用的小米5,换了未来直接把拥有照片拷贝了回复),平均每一天大概照旧会新增8到9张图片。内容包罗团结拍的照片、显示器的截图、文档的扫描图还有一对从电脑Airdrop过来的图片。

占用量第三多的则是iTunes音乐了,有3.6GB。这一个音乐半数以上都是本身从总括机上下载的音乐中导入过来的。有局地则是从我自己买的特辑导入进去的。

Intent是一个用来从一个App组件启动其他零件的消息对象。那里有3种基本的用法:

运用景况回想

手机对自家而言,最常用的多少个功效如下:联系(电话、短信、邮件);线上社交/新闻获得(腾讯网、微信);视听(优酷、音乐、喜马拉雅);记录(图片、照相、文字);健康(运动、睡眠、闹钟)……

联络作用无需赘述,接打电话、收发短信与邮件都对即时性有较高的急需。使用手机,联系这些效应是听之任之要负有的。其余功效由于自家个人的运用习惯等原因,我都会尽可能挑选自己认为最合适的格局来形成。

Intent匹配

queryIntentActivities()可以回去那一个组件可以承受你的Intent,具体请查看这里


P.S:每一日写一篇感觉好累啊……