The import android provider.ContactsContract cannot be resolved

原因是例子里面用的是android1.5,里面没有android provider.ContactsContract包

1、在文件default.properties 里修改target的值为target=android-8
2、在androidmanifest.xml改sdk的版本为8,即<uses-sdk android:minSdkVersion="8" />

package com.example.kongjian; import androidx.appcompat.app.AppCompatActivity; import androidx.core.view.ViewCompat; import android.annotation.SuppressLint; import android.graphics.Insets; import android.os.Bundle; import android.provider.ContactsContract; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.time.Instant; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private EditText editText; private Button btn1; private TextView textView; private Button btn2; private Button btn3; @SuppressLint("WrongViewCast") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EdgeT editText=findViewById(R.id.j_b); textView=findViewById(R.id.t_b); btn1=findViewById(R.id.t_a); btn2=findViewById(R.id.t_c); btn3=findViewById(R.id.t_d); btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.),((v, insets) -> { Insets systemBars=insets.getInsets(Window); v.setPadding(systemBars.left,systemBars.top,systemBars.right,systemBars.bottom); return insets; })); } @Override public void onClick(View v){ Button btn=(Button)v; if (btn.getId()==R.id.t_a){Toast.makeText(MainActivity.this,"按钮1被点击了",Toast.LENGTH_LONG).show();} else if(btn.getId()==R.id.t_c){Toast.makeText(MainActivity.this,"按钮2被点击了",Toast.LENGTH_LONG).show();} else{Toast.makeText(MainActivity.this,"按钮3被点击了",Toast.LENGTH_LONG).show();} } }
03-18
package com.example.contentprovidertest; import android.content.ContentResolver; import android.database.Cursor; import android.os.Bundle; import android.provider.ContactsContract; import android.util.Log; import android.widget.ArrayAdapter; import android.widget.ListView; import androidx.appcompat.app.AppCompatActivity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { private static String TAG = "MainActivity"; private ListView listViewContacts; private List<Map<String, String>> contactList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listViewContacts = findViewById(R.id.listViewContacts); contactList = new ArrayList<>(); // 检查并请求权限(对于API 23及以上版本) if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { if (checkSelfPermission(android.Manifest.permission.READ_CONTACTS) != android.content.pm.PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{android.Manifest.permission.READ_CONTACTS}, 1); return; } } loadContacts(); } private void loadContacts() { Log.d(TAG,"start loadContacts"); ContentResolver contentResolver = getContentResolver(); Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); if (cursor != null && cursor.getCount() > 0) { int idColumnIndex = cursor.getColumnIndex(ContactsContract.Contacts._ID); int nameColumnIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); int hasPhoneColumnIndex = cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER); // 检查关键列是否存在 if (idColumnIndex == -1 || nameColumnIndex == -1 || hasPhoneColumnIndex == -1) { cursor.close(); return; // 或者处理错误情况 } while (cursor.moveToNext()) { String id = cursor.getString(idColumnIndex); String name = cursor.getString(nameColumnIndex); // 检查是否有电话号码 String hasPhoneStr = cursor.getString(hasPhoneColumnIndex); if (hasPhoneStr != null && Integer.parseInt(hasPhoneStr) > 0) { Cursor phoneCursor = contentResolver.query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null); if (phoneCursor != null) { int phoneColumnIndex = phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); if (phoneColumnIndex == -1) { phoneCursor.close(); continue; // 跳过这个联系人 } while (phoneCursor.moveToNext()) { String phoneNumber = phoneCursor.getString(phoneColumnIndex); if (phoneNumber != null) { // 确保电话号码不为null Map<String, String> contact = new HashMap<>(); contact.put("name", name); contact.put("phoneNumber", phoneNumber); contactList.add(contact); } } phoneCursor.close(); } } } cursor.close(); // 使用自定义适配器显示数据 CustemAdapter adapter = new CustemAdapter(this, contactList); listViewContacts.setAdapter(adapter); } } } 帮我给上面的代码加上尽可能详细的注释
最新发布
08-21
package com.example.kongjian; import androidx.appcompat.app.AppCompatActivity; import androidx.core.view.ViewCompat; import android.annotation.SuppressLint; import android.graphics.Insets; import android.os.Bundle; import android.provider.ContactsContract; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.time.Instant; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private EditText editText; private Button btn1; private TextView textView; private Button btn2; private Button btn3; @SuppressLint("WrongViewCast") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText=findViewById(R.id.j_b); textView=findViewById(R.id.t_b); btn1=findViewById(R.id.t_a); btn2=findViewById(R.id.t_c); btn3=findViewById(R.id.t_d) btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"按钮被点击了",Toast.LENGTH_LONG).show(); } }); btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.),((v, insets) -> { Insets systemBars=insets.getInsets(wind) })); } @Override public void onClick(View v){ Button btn=(Button)v; if (btn.getId()==R.id.btn1){Toast.makeText(MainActivity.this,"按钮被点击了",Toast.LENGTH_LONG).show();} else if(btn.getId()==R.id.btn2){Toast.makeText(MainActivity.this,"按钮被点击了",Toast.LENGTH_LONG).show();} else{Toast.makeText(MainActivity.this,"按钮被点击了",Toast.LENGTH_LONG).show();} } }
03-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值