- 浏览: 1066004 次
- 性别:
- 来自: 南昌
文章分类
- 全部博客 (276)
- 生活 (1)
- 代码之美 (22)
- Media (7)
- Android Widget (3)
- Android Intent (1)
- Android Activity (4)
- UI event handle--UI事件处理机制 (2)
- Java基础知识 (12)
- android Databases (5)
- Android 系统知识 (70)
- 平常遇到的问题与解决方法 (38)
- Android TextView/EditView (2)
- Thinking Java (1)
- android webkit (6)
- JSON (1)
- XML (4)
- HTTP (1)
- Google Weather API (1)
- android 2.3 NFC (10)
- android app (20)
- android framework (7)
- C++ (2)
- android System (5)
- Pthread (1)
- Wifi (8)
- Unix/Linux C (8)
- Android 4.0 (1)
- Mail (1)
- Smack 源码学习 (4)
- iOS (4)
- Android (1)
- git (1)
- Gallery3d (2)
- React-Natice (1)
最新评论
-
dd18349182956:
你是用的smack哪个版本?我用的smack4.1.3和sma ...
关于socket长连接的心跳包 -
xukaiyin:
全英文
getApplicationContext()与this,getBaseContext() -
裂风矢:
...
<category android:name="android.intent.category.DEFAULT" /> 惹的祸 -
xanthodont:
mark一下
XMPP——Smack -
Evilover3:
mark一下,学习了
XMPP——Smack
当Email未设置账户时,通过ACTION_SENDTO启动会报ActivityNotFoundException
手机里已经安装了email的apk,检查manitfest中也有对应的action,并且activity也没有被disable掉,为何就是找不到呢?
1.我下载了一个QQ邮箱安装到手机,发现ACTION_SENDTO启动QQ邮箱的设置界面
2.我把QQ邮箱卸载了,在原生Email里面登录一个账号,再ACTION_SENDTO可以启动对应的ComposeActivityEmail
3.那就是没有账号不能启动ComposeActivityEmail
4.ActivityStarter中startActivityMayWait的ResolveInfo rInfo = mSupervisor.resolveIntent(intent, resolvedType, userId);
和 ActivityInfo aInfo = mSupervisor.resolveActivity(intent, rInfo, startFlags, profilerInfo);当有账号rInfo 和aInfo 都不为null,当没有账号返回的是null.
5.通过分析得知ComposeActivityEmail是动态被enable和disable的,所以搜索setComponentEnabledSetting,找到了关键代码
http://androidxref.com/7.1.1_r6/xref/packages/apps/Email/provider_src/com/android/email/provider/AccountReconciler.java
将这部分代码拿掉没有账号也可以启动email来处理sendto
具体为何google要这样做,目前还没有找到其理由。
手机里已经安装了email的apk,检查manitfest中也有对应的action,并且activity也没有被disable掉,为何就是找不到呢?
<activity android:name="com.android.email.activity.ComposeActivityEmail" android:label="@string/app_name" android:documentLaunchMode="intoExisting" android:autoRemoveFromRecents="true" android:theme="@style/ComposeTheme"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.SENDTO" /> <data android:scheme="mailto" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter>
1.我下载了一个QQ邮箱安装到手机,发现ACTION_SENDTO启动QQ邮箱的设置界面
2.我把QQ邮箱卸载了,在原生Email里面登录一个账号,再ACTION_SENDTO可以启动对应的ComposeActivityEmail
3.那就是没有账号不能启动ComposeActivityEmail
4.ActivityStarter中startActivityMayWait的ResolveInfo rInfo = mSupervisor.resolveIntent(intent, resolvedType, userId);
和 ActivityInfo aInfo = mSupervisor.resolveActivity(intent, rInfo, startFlags, profilerInfo);当有账号rInfo 和aInfo 都不为null,当没有账号返回的是null.
5.通过分析得知ComposeActivityEmail是动态被enable和disable的,所以搜索setComponentEnabledSetting,找到了关键代码
http://androidxref.com/7.1.1_r6/xref/packages/apps/Email/provider_src/com/android/email/provider/AccountReconciler.java
if (!TextUtils.isEmpty(composeActivityName)) { // If there are no accounts remaining after reconciliation, disable the compose activity final boolean enableCompose = emailProviderAccounts.size() - accountsDeleted > 0; final ComponentName componentName = new ComponentName(context, composeActivityName); context.getPackageManager().setComponentEnabledSetting(componentName, enableCompose ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED : PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); LogUtils.d(LogUtils.TAG, "Setting compose activity to " + (enableCompose ? "enabled" : "disabled")); }
将这部分代码拿掉没有账号也可以启动email来处理sendto
具体为何google要这样做,目前还没有找到其理由。
发表评论
-
Android Webview加载www.youtube.com的问题
2019-04-25 10:36 990Android Webview加载www.youtube.co ... -
EditText键盘删除字符的原理
2018-10-29 19:21 1246转https://blog.csdn.net/tankai19 ... -
Background execution not allowed
2018-10-22 19:02 358111-05 10:08:18.058 673 736 ... -
failed to set system property
2018-10-17 09:21 4366在App的mk文件设置了LOCAL_CERTIFICATE : ... -
CtsDeqpTestCases fail
2018-07-27 09:44 3016Suite / Plan:VTS / cts-on-gsi ... -
在DocumentUI中的Recent(最近)列表无法显示图片的缩略图
2018-06-12 18:23 938今天客户提了一个bug说在短信添加附件,界面无法显示缩略图。接 ... -
在任务栏中清除掉播放器的进程,状态栏仍有音乐播放器状态,且音乐仍在后台播放
2018-06-05 11:28 1635在任务栏中清除掉播放器的进程,状态栏仍有音乐播放器状态,且音乐 ... -
junit.framework.AssertionFailedError: Failed to get achievable frame rates for O
2018-05-25 15:41 2343之前对于CTS测试的失败case接触不多,组长突然转了这样一个 ... -
Android 模拟各种事件的方法
2018-05-17 16:30 1523有时候没有对应的硬件设备,那我们就得通过某种方式来模拟。比如模 ... -
Android Email 新建邮件时一直显示“waiting for sync”
2018-02-28 15:48 989当用户在Setting中清除了Email的data,再返回到E ... -
javax.net.ssl.SSLHandshakeException: Unacceptable certificate: CN=GeoTrust SSL C
2018-01-30 16:48 3772最近从Android N升级到Android O,发现163的 ... -
Email中附件名称中包含中文字符显示乱码
2017-11-28 17:09 1610Email中附件名称中包含中文字符显示乱码是因为附件虽包含了中 ... -
不能再通过createPackageContext来访问另外一个应用的资源(Sharepreference)
2017-11-14 17:22 1462以前我们可以通过createPackageContext来访问 ... -
java.lang.SecurityException: Permission Denial: reading...requires android.permi
2016-05-12 11:12 2369一直在忙于Gallery,最近遇到了这样的bug,在Setti ... -
android.database.sqlite.SQLiteReadOnlyDatabaseException: attempt to write a read
2015-11-27 14:50 2956android.database.sqlite.SQLiteR ... -
AsyncTask
2015-08-21 17:43 417转自http://blog.csdn.net/hitlion2 ... -
解决IllegalStateException: Can not perform this action after onSaveInstanceState
2015-08-07 18:07 1090转自http://www.cnblogs.com/zgz345 ... -
Android setTag方法的key问题
2015-08-03 19:22 1073转自http://www.cnblogs.com/whitew ... -
ActivityGroup对子Activity的管理
2013-06-27 17:41 2105转自http://eyeandroid.diandian.co ... -
listview在activitygroup切换后无法点击的问题
2013-05-14 10:14 1495转自:http://blog.csdn.net/daguaio ...
相关推荐
在IT行业中,网络通信是至关重要的一个领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议。本篇文章将详细探讨TCP和UDP的区别,以及如何使用C语言中的`recvfrom`、`tcp_sendto`等函数进行...
首先,`sendto()`函数是用于UDP(用户数据报协议)的,它允许程序员指定目标地址和端口,直接发送数据。然而,在这里,描述提到使用`sendto()`发送TCP数据包,这并不常见,因为TCP通常使用`connect()`或`send()`来...
udp网络编程
在这个例子中,当系统执行主重置时,会触发`onReceive()`方法,允许应用程序执行恢复默认配置等操作。 ### 8. 定义ContentObserver,监听某个数据表 ```java private ContentObserver mDownloadsObserver = new ...
mmsintent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true); startActivity(mmsintent); ``` 4. **发送彩信(MMS)** 发送包含多媒体内容的彩信,你需要使用ACTION_SEND动作,并设置额外的流...
- `Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY`、`Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE`、`Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT`:这些都是用于发送短信时传递额外信息的键值对。 - 通过这种方式可以...
当需要在Google中搜索特定内容时,可以创建一个Intent并设置ACTION_WEB_SEARCH。同时,通过putExtra方法添加SearchManager.QUERY参数,传入搜索字符串,然后启动该Intent。 ```java Intent intent = new Intent(); ...
intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI, sb.toString()); intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true); startActivity(intent); ``` 以上示例展示了如何使用`Intent`执行...
mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body); mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true); mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, ...
mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body); mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true); mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, ...
mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body); mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true); mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, ...
intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT, subject); intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, ...); ``` 以上代码片段涵盖了Android中常见的用户交互操作,如网络搜索...
mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body); mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true); mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, ...
当接收到特定的动作广播时,会触发`onReceive`方法执行相应的逻辑处理,如本例中的重置配置操作。 这些代码片段不仅展示了Android开发中的常见需求和解决方案,还体现了如何利用Android框架提供的API和组件,以简洁...
- **`Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE`**:设置是否进入编辑模式。 - **`Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT`**:发送后退出。 #### 9. 发送彩信 ```java Uri uri = Uri.parse("content://media/...
mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true); // 提供图片的Uri mmsIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + file.getAbsolutePath())); startActivity(mmsIntent...
当Intent被startActivity()或startService()启动时,Android会查找匹配的Activity或Service,如果有多个匹配项,系统通常会提供一个让用户选择的对话框。 Intent还可以用于启动Service,传递数据,以及实现...
intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI, sb.toString()); intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, composeMode); intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_...
4. `ACTION_CALL`:直接拨打电话,与`ACTION_DIAL`不同,会立即发起通话。 5. `ACTION_MAIN`:这是启动应用程序的主入口点,通常与`CATEGORY_LAUNCHER`一起使用,创建应用快捷方式。 6. `ACTION_EDIT`:编辑数据,...