mhe*_*nry 3 java android android-intent
目前,我有一个非常标准的ACTION_SEND意图来从我的应用程序内部共享信息.代码类似于以下内容:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, text);
context.startActivity(Intent.createChooser(intent, title));
Run Code Online (Sandbox Code Playgroud)
现在,如果用户在他们的手机上安装了Facebook应用程序,则Facebook会显示为意图选择器的选项.但是,我想拦截用户点击"Facebook"并使用Facebook SDK执行任务,而不是用户手机上已有的Facebook应用程序.有没有办法拦截onClick的Facebook选项?谢谢!
小智 7
这是我的博客文章的链接,其中包含详细的解决方案,包括代码和屏幕截图.
http://clickclickclack.wordpress.com/2012/01/03/intercepting-androids-action_send-intents/
正如该文引述:
[W]首先创建一个新的action_send intent并将类型设置为text/plain.接下来,我们创建一个List.我们调用包管理器来查询注册了action_send意图的所有活动.此调用返回ResolveInfo对象列表,每个对象对应于声称处理发送操作的设备上的活动.
[然后,r] athe启动action_send意图并让它创建自己的对话框(我们无法控制),我们将使用AlertDialog.Builder构建自己的对话框.首先我们给它一个标题,然后将其适配器设置为我们刚创建的列表适配器,并将活动列表作为我们的数据集[.]
我们需要关注的下一个重要部分是我们为Builder提供的OnClick监听器.要查找用户单击的项目,我们使用adapter.getItem(int which)方法.这将返回原始列表的该位置中的对象,在本例中为与所选Activity对应的ResolveInfo对象.特别是对于我的情况,我只关心将事物分成两组:Facebook而不是Facebook.为此,我只需检查所选活动的包名是否包含"facebook".如果没有,我创建一个新的action_send intent,将类名设置为所选活动,然后启动它.但是,如果包名称包含'facebook',我会实例化我的个人PostToFacebookDialog对象,该对象将创建一个带有发布和取消按钮的基本Android对话框,并将使用Graph API直接发布到Facebook,从而绕过用户安装的Facebook应用程序.
| 归档时间: |
|
| 查看次数: |
5052 次 |
| 最近记录: |