2012-02-12 46 views
0

第一关 - 让我只想说,我不问如何实现一个分享按钮在我的应用程序之类的东西。我知道所有有关使用意图和意图过滤器等等等等机器人 - 操纵“共享”菜单

什么,我问的是:有什么办法来获得访问“共享” 菜单本身?换句话说,我很乐意构建一个应用程序来过滤掉一些我从不使用的服务,但我不想完全从手机中删除。

我试过了Android API中寻找它,但只找到信息在得到您的应用程序在菜单中出现或将在您的应用程序等

一个“分享”按钮是当我还在有点新手程序员,我也想知道是否有一些方法可以让我在构建/显示“共享”菜单时嗅探创建/使用的API对象?似乎我可以在调试器会话中做到这一点,但我不知道如何。

预先感谢您。 b

回答

1

嗯,有四处共享菜单两种方式。第一种是使用

startActivity(Intent.createChooser(Intent, CharSequence) 

但在这种情况下,我不知道如何获取到所创建的共享菜单访问,怎么它是一个独立的活动。 但是,如果您希望控制应用程序显示的共享项目列表,还有另一种方法可以实现您的共享菜单项目实现。 看看这个代码片段:

//Prepare an intent to filter the activities you need 
//Add a List<YourItemType> where you going to store the share-items 
List<YourItemType> myShareList = new List<YourItemType>; 

PackageManager packageManager = mContext.getPackageManager(); 
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0); 
int numActivities = activities.size(); 

for (int i = 0; i != numActivities; ++i) { 
    final ResolveInfo info = activities.get(i); 
    String label = info.loadLabel(packageManager).toString(); 

    //now you can check label or some other info and decide whether to add the item 
    //into your own list of share items 

    //Every item in your list should have a runnable which will execute 
    // proper share-action (Activity) 
    myShareList.add(new YourItemType(label, info.loadIcon(packageManager), new Runnable() 
    { 
     public void run() { 
      startResolvedActivity(intent, info); 
     } 
})); 

} 

这段代码演示了如何获取它们能够处理共享请求的活动的列表。接下来你需要做的是展示你自己的用户界面。这取决于你要选择什么。

+0

感谢亚历克斯,这是有价值的信息 - 但我想,我是不是我想要做的彻底清除。我不打算在我的应用程序中筛选“共享”项目 - 我想在所有应用程序中筛选它们! 我猜它可能是不可能的,因为每个应用程序都在它自己的沙箱中实现了共享菜单,但是我所希望的是为那些嵌入到系统API中的“共享”菜单项提供某种钩子将允许我过滤和合并列表中显示的项目 - 再次为*每个*应用程序。 – 2012-02-13 23:18:38

+0

也 - 我知道,在ICS中,您可以在*自己的应用程序中实现代码*,这会导致您的更频繁使用的项目浮动到“共享”菜单的顶部......所以我想,也许有一些直接访问它的属性的方法。 – 2012-02-13 23:22:34

+0

啊,我明白了。我误解了你的“构建一个应用程序,它过滤掉了我从未使用过的某些服务”。那么,不能确定这一点,因为我从来没有尝试过。但是如果列表是基于来自包管理器的信息动态生成的(我相信是这种情况),我看到全局操作共享列表的唯一方法是使用PackageManager。但是,简单地研究了它的API,我不知道如何实现你的目标。 关于ICS的事情:这听起来很有趣 - 你能给我一个链接或什么? – 2012-02-13 23:54:30