无法在窗口小部件类中使用startActivityForResult

时间:2011-08-07 21:31:16

标签: android

我仍然是这个Android的新东西,但我正在尝试编写一个小部件。我得到了我需要在一个独立应用程序中工作的所有代码,但我现在正试图让它作为一个小部件。但是我在启动联系人选择器意图时遇到了一些问题。

基本上,我想要做的是在创建窗口小部件时启动联系人选择器意图,但是这个简单的代码对我不起作用,我不确定它有什么问题。这是代码片段......

    public class WidgetProvider extends AppWidgetProvider 
{ 
  ....

  @Override
  public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) 
  { //User is creating a new widget.
    //Select a contact.
    int contact_pick = 1;
    //Contact Picker
    Intent PickContact = new Intent(
      Intent.ACTION_PICK, 
      ContactsContract.Contacts.CONTENT_URI
    );
    startActivityForResult(PickContact, contact_pick);
  }

  ....
}

eclipse只为startactivity行提供以下消息:方法startActivityForResult(Intent,int)未定义类型  WidgetProvider

我在这里做错了什么想法?

2 个答案:

答案 0 :(得分:2)

startActivityForResult()仅适用于Activity。您无法从AppWidgetProvider中选择联系人。但是,您可以使用Activity开始定期startActivity(),然后可以使用startActivityForResult()选择联系人。

答案 1 :(得分:0)

首先,有点挑剔:你不应该使用大写的变量,调用你的选择器pickContact,而不是PickContact。

其次,您的消息告诉您未定义的WidgetProvider类型。 WidgetProvider,你的类,扩展AppWidgetProvider,但除非我弄错了,AppWidgetProvider缺少startActivityForResult。因此,消息,你不是从你应该从它调用它的类调用方法...