app1代码
package com.example.day1019;
import android.Manifest;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.example.day1019.sql.MySqlHelp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static android.provider.ContactsContract.CommonDataKinds.Phone.NUMBER;
public class MainActivity extends AppCompatActivity {
private Button mainButtonGetUser;
private MySqlHelp mySqlHelp;
private SQLiteDatabase db;
private ContentResolver resolver;
private Uri uri;
private Cursor query;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mainButtonGetUser = (Button) findViewById(R.id.main_button_getUser);
mySqlHelp=new MySqlHelp(this,"user.db",null,1);
db = mySqlHelp.getReadableDatabase();
resolver = getContentResolver();
uri= ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
mainButtonGetUser.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},100);
}else {
read();
}
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode==100&&grantResults[0]== PackageManager.PERMISSION_GRANTED){
read();
}else {
finish();
}
}
private void read() {
query = resolver.query(uri, null, null, null, null);
if (query!=null){
while (query.moveToNext()){
String name = query.getString(query.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String tel = query.getString(query.getColumnIndex(NUMBER));
Date date=new Date();
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String format = sDateFormat.format(date);
Log.i("TAG", "read: "+format);
USER user=new USER();
user.setName(name);
user.setTel(tel);
user.setDate(format);
ContentValues contentValues = new ContentValues();
contentValues.put("name",name);
contentValues.put("telnumber",tel);
contentValues.put("data",format);
db.insert("linkman",null,contentValues);
}
query.close();
}
}
}
内容提供者
package com.example.day1019;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import com.example.day1019.sql.MySqlHelp;
public class MyProvider extends ContentProvider {
private MySqlHelp mySqlHelp;
private SQLiteDatabase db;
public MyProvider() {
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int user = db.delete("linkman", selection, selectionArgs);
return user;
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
db.insert("linkman",null,values);
return uri;
}
@Override
public boolean onCreate() {
mySqlHelp=new MySqlHelp(getContext(),"user.db",null,1);
db = mySqlHelp.getReadableDatabase();
if (db!=null){
return true;
}
return false;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
Cursor user = db.query("linkman", projection, selection, selectionArgs, null, null, sortOrder);
return user;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
return db.update("linkman",values,selection,selectionArgs);
}
}
数据库创建
package com.example.day1019.sql;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MySqlHelp extends SQLiteOpenHelper {
public MySqlHelp(Context context,String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table linkman (id integer primary key autoincrement,name varchar(20),telnumber varchar(20),data varchar(30) )");
db.beginTransaction();
for (int i = 1; i < 6; i++) {
String sql="insert into linkman values(null,?,?,?)";
db.execSQL(sql,new Object[]{"蘑菇"+i+1,"1361382880"+i,"2019-10-1"+i});
}
db.setTransactionSuccessful();
db.endTransaction();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
app2
package com.example.app1;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.RadioButton;
import com.example.app1.fragment.Fragmentperson;
import com.example.app1.fragment.Fragmentzhuye;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private List<Fragment> fragmentList = new ArrayList<>();
private RadioButton mainZhuye;
private RadioButton mainPerson;
private FragmentManager manager;
private Fragmentzhuye fragmentzhuye;
private Fragmentperson fragmentperson;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
viewPager = (ViewPager) findViewById(R.id.viewPager);
mainZhuye = (RadioButton) findViewById(R.id.main_zhuye);
mainPerson = (RadioButton) findViewById(R.id.main_person);
manager = getSupportFragmentManager();
fragmentzhuye = new Fragmentzhuye();
fragmentperson = new Fragmentperson();
fragmentList.add(fragmentzhuye);
fragmentList.add(fragmentperson);
viewPager.setAdapter(new FragmentPagerAdapter(manager) {
@Override
public Fragment getItem(int i) {
return fragmentList.get(i);
}
@Override
public int getCount() {
return fragmentList.size();
}
});
mainZhuye.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(0);
}
});
mainPerson.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(1);
}
});
}
}
fragemntPerson
package com.example.app1.fragment;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.Toast;
import com.example.app1.Adapter.MyAdapter;
import com.example.app1.R;
import com.example.app1.USER;
import java.util.ArrayList;
import java.util.List;
public class Fragmentperson extends Fragment {
private ListView main2ListView;
private List<USER> list=new ArrayList<>();
private MyAdapter myAdapter;
private ContentResolver resolver;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View inflate = inflater.inflate(R.layout.fragment_fragmentperson, container, false);
main2ListView = (ListView)inflate.findViewById(R.id.main2_listView);
resolver = getContext().getContentResolver();
myAdapter=new MyAdapter(getActivity(),list);
main2ListView.setAdapter(myAdapter);
Cursor query = resolver.query(Uri.parse("content://com.mogu.day1019"), null, null, null, null);
if (query!=null){
Log.i("TAG", "onCreateView: "+query);
while (query.moveToNext()){
USER user=new USER();
String name = query.getString(query.getColumnIndex("name"));
String tel = query.getString(query.getColumnIndex("telnumber"));
String data = query.getString(query.getColumnIndex("data"));
user.setDate(data);
user.setName(name);
user.setTel(tel);
list.add(user);
}
Log.i("TAG", "onCreateView: "+list.toString());
myAdapter.notifyDataSetChanged();
query.close();
}
main2ListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
PopupWindow popupWindow = new PopupWindow();
View inflate1 = LayoutInflater.from(getActivity()).inflate(R.layout.item_popuwindow, null);
popupWindow.setContentView(inflate1);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
Button button = inflate1.findViewById(R.id.popu_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
builder.setIcon(R.mipmap.ic_launcher);
builder.setMessage("您确定要删除吗?");
builder.setTitle("友情提示");
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getContext(), "取消删除", Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
resolver.delete(Uri.parse("content://com.mogu.day1019"),"id=?",new String[]{position+""});
list.remove(position);
myAdapter.notifyDataSetChanged();
}
});
builder.show();
}
});
popupWindow.setOutsideTouchable(true);
popupWindow.showAtLocation(inflate1, Gravity.CENTER,0,0);
return true;
}
});
return inflate;
}
}
fragmentzhuye
package com.example.app1.fragment;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
import com.example.app1.R;
public class Fragmentzhuye extends Fragment {
private Button fragmentzhuyeButton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_fragmentzhuye, container, false);
fragmentzhuyeButton = (Button)inflate.findViewById(R.id.fragmentzhuye_button);
fragmentzhuyeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE},100);
}else {
}
}
});
return inflate;
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode==100&&grantResults[0]== PackageManager.PERMISSION_GRANTED){
Toast.makeText(getContext(), "已获得权限", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(getContext(), "未获得权限", Toast.LENGTH_SHORT).show();
}
}
}
适配器
package com.example.app1.Adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.example.app1.R;
import com.example.app1.USER;
import java.util.List;
public class MyAdapter extends BaseAdapter {
private Context context;
private List<USER> list;
private LayoutInflater layoutInflater;
public MyAdapter(Context context, List<USER> list) {
this.context = context;
this.list = list;
layoutInflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView==null) {
holder=new ViewHolder();
convertView=layoutInflater.inflate(R.layout.item_layout,null);
holder.textView_name=convertView.findViewById(R.id.main2_text_name);
holder.textView_tel=convertView.findViewById(R.id.main2_text_tel);
holder.textView_time=convertView.findViewById(R.id.mian2_text_date);
convertView.setTag(holder);
}else {
holder= (ViewHolder) convertView.getTag();
}
holder.textView_name.setText(list.get(position).getName());
holder.textView_tel.setText(list.get(position).getTel());
holder.textView_time.setText(list.get(position).getDate());
return convertView;
}
static class ViewHolder{
private TextView textView_name;
private TextView textView_tel;
private TextView textView_time;
}
}