Android从类创建联系人扩展异步任务

Android从类创建联系人扩展异步任务,android,android-asynctask,Android,Android Asynctask,我使用developers.android.com的代码创建联系人 ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); int rawContactInsertIndex = ops.size(); ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)

我使用developers.android.com的代码创建联系人

ArrayList<ContentProviderOperation> ops =
      new ArrayList<ContentProviderOperation>();

 int rawContactInsertIndex = ops.size();
 ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
      .withValue(RawContacts.ACCOUNT_TYPE, accountType)
      .withValue(RawContacts.ACCOUNT_NAME, accountName)
      .build());

 ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
      .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
      .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
      .withValue(StructuredName.DISPLAY_NAME, "Mike Sullivan")
      .build());

 getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
arraylistops=
新的ArrayList();
int rawContactInsertIndex=ops.size();
添加(ContentProviderOperation.newInsert(RawContacts.CONTENT\uURI)
.withValue(RawContacts.ACCOUNT\u类型,accountType)
.withValue(RawContacts.ACCOUNT\u名称、accountName)
.build());
add(ContentProviderOperation.newInsert(Data.CONTENT\u URI)
.带ValueBackReference(Data.RAW\u CONTACT\u ID,RAW contactInsertIndex)
.withValue(Data.MIMETYPE、StructuredName.CONTENT\u ITEM\u TYPE)
.withValue(StructuredName.DISPLAY_NAME,“Mike Sullivan”)
.build());
getContentResolver().applyBatch(contacts contract.AUTHORITY,ops);
当从活动中完成时,它工作得很好,但我想从一个扩展了AsyncTask的类中完成它。我做了一些研究并得出结论,我需要以某种方式传递上下文(因为简单的getActivity()不起作用),这样我就可以传递context.getContentResolver().applyBatch(ContactsContract.AUTHORITY,ops);
但不幸的是,在我的例子中,我不知道如何做这是如何将上下文传递给AsyncTask类的:

newcreatecontact().execute(getActivity())在片段中

或者在活动
newcreatecontact()中执行(getApplicationContext())

public类CreateContact扩展异步任务{
语境;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();}
@凌驾
受保护的Void doInBackground(上下文…参数){
mContext=param[0];
试一试{
//你的代码。。。。。
mContext.getContentResolver().applyBatch(contacts contract.AUTHORITY,ops);
}
}捕获(例外e){
e、 printStackTrace();}
返回null;
}
受保护的void onPostExecute(void res){
//你的代码。。。。。
}
}

或者您可以将上下文传递给构造

通过AsyncTask自定义类的构造函数传递活动怎么样?并将其保存为要使用的全局变量?
public class CreateContact extends AsyncTask<Context, Void, Void> {
    Context  mContext;
    @Override
    protected void onPreExecute() {
        super.onPreExecute();}

    @Override
    protected Void doInBackground(Context... param) {
        mContext=param[0];
        try {
          //your code.....              
          mContext.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
          }
        } catch (Exception e) {
            e.printStackTrace();}
        return null;
    }
    protected void onPostExecute(Void res) {
        //your code.....
    }
}