2011-08-11 55 views
0

我想訪問「發送到」菜單,該菜單包含了該操作的所有顯然已註冊的收件人。
在我的電話,這個菜單包含 *電子郵件 * PIN *短信 * MMS * BBM聯繫人訪問黑莓「發送到」菜單

我怎樣才能做到這一點從Java?

編輯:對於BB OS 4.0+平臺。

下面是我通過覆蓋getMenu方法到目前爲止使用的。
在getAppName()在模擬器上,我已經得到的值,如: * net_rim_bb_sendusingbluetoothapp * net_rim_bb_sendasemailapp * net_rim_bb_sendtomessengercontactapp

所以我想我會用一些與string.replace()有,但我當使用

reg.invoke(inv); 

以下調用,雖然郵件應用程序啓動,但不會顯示主題或消息內容等參數。我應該如何着手設置?

此外,對於setData(),我只是傳入一個隨機字符串。 (我很確定這是我應該設置更有意義的東西的地方,但我不知道是什麼)。

public Menu getMenu(int instance) { 
     Menu menu = super.getMenu(instance); 

     final Registry reg = Registry.getRegistry(CLASSNAME); 
     ContentHandler[] handles = reg.forAction(ContentHandler.ACTION_SEND); 


     for (int i=0;i<handles.length;i++) 
     { 
      String name = handles[i].getAppName(); 
      final Invocation inv = new Invocation(); 
      inv.setURL(sendToUrl); 
      inv.setResponseRequired(false); 
      inv.setType(handles[i].getType(0)); 
      inv.setID(handles[i].getID()); 
      inv.setData(sendToUrl.getBytes()); 
      inv.setAction(handles[i].getAction(0)); 
      inv.setArgs(new String[]{sendToUrl}); 



      MenuItem mit = new MenuItem(new StringProvider(name), i, i) 
      { 
       public void run() { 
        try { 
         reg.invoke(inv); 
         //inv.open(false); 
        } catch (SecurityException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 
      }; 

      //ContentHandlerMenu contentHandlerMenu 
      //= new ContentHandlerMenu(inv, reg, "Send to "+ name, i,i); 

      //menu.add(contentHandlerMenu); 
      menu.add(mit); 
     } 
     return menu; 

    } 
+0

@維克的答案是最好的你會得到。在OS 7之前,RIM沒有公開發送菜單。 –

+0

@Scott,在黑莓應用程序(OS 5.0)的Twitter上查看,「發送到」菜單看起來像是從操作系統獲得的東西。如果不是,Twitter做得很好。 – Irwin

+1

BlackBerry的Twitter應用程序(至少是剛剛稱爲「Twitter」的應用程序)實際上是由RIM開發的;)我的猜測是他們可以做任何他們想做的事情。 –

回答

4

這是你所需要的? Send Menu API。我發現它在谷歌搜索......這並不困難。