#1 DeleteAllContacts v1.0.1

Open
lyq wants to merge 3 commits from lyq/feature/green-salamander into lyq/master

+ 3 - 1
.gitignore

@@ -1,4 +1,6 @@
 /bin
 /bin
 /gen
 /gen
 /.settings
 /.settings
-/.gradle
+/.gradle
+/.idea
+local.properties

+ 10 - 0
README.md

@@ -0,0 +1,10 @@
+# DeleteAllContacts
+
+android 删除所有联系人,黑莓10无法批量添加/删除联系人。很多重复信息需要删除,本项目实现这个功能。
+
+## develop
+
+```
+./gradlew assembleDebug
+```
+

+ 7 - 1
app/src/main/AndroidManifest.xml

@@ -2,7 +2,13 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="me.yoqi.deleteallcontacts"
     package="me.yoqi.deleteallcontacts"
  >
  >
-
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    
     <uses-permission android:name="android.permission.READ_CONTACTS" />
     <uses-permission android:name="android.permission.READ_CONTACTS" />
     <uses-permission android:name="android.permission.WRITE_CONTACTS" />
     <uses-permission android:name="android.permission.WRITE_CONTACTS" />
     <uses-permission android:name="android.permission.GET_ACCOUNTS" />
     <uses-permission android:name="android.permission.GET_ACCOUNTS" />

+ 27 - 0
app/src/main/java/me/utils/BlackBerryContactManager.java

@@ -52,4 +52,31 @@ public class BlackBerryContactManager {
 //			contactList.removeContact(c);
 //			contactList.removeContact(c);
 //		}
 //		}
 	}
 	}
+
+	/**
+	 * 删除所有短信
+	 * @throws Exception
+	 */
+	public void delAllSMS () throws Exception{
+		Uri uri = Uri.parse("content://sms/");
+		Cursor cursor = resolver.query(uri, new String[] { "_id" }, null, null, null);
+		while (cursor.moveToNext()) {
+			int id = cursor.getInt(0);
+			resolver.delete(uri, "_id=" + id, null);
+		}
+	}
+
+	/**
+	 * 删除所有通话记录
+	 * @throws Exception
+	 */
+	public void delAllPhoneLog() throws Exception{
+		Uri uri = Uri.parse("content://call_log/calls");
+		Cursor cursor = resolver.query(uri, new String[] { "_id" }, null, null, null);
+		while (cursor.moveToNext()) {
+			int id = cursor.getInt(0);
+			resolver.delete(uri, "_id=" + id, null);
+		}
+	}
+	
 }
 }

+ 106 - 59
app/src/main/java/me/yoqi/deleteallcontacts/MainActivity.java

@@ -1,74 +1,121 @@
 package me.yoqi.deleteallcontacts;
 package me.yoqi.deleteallcontacts;
 
 
-import java.util.ArrayList;
-import java.util.HashMap;
-
 import android.content.Context;
 import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Handler;
 import android.os.Message;
 import android.os.Message;
-import androidx.appcompat.app.AppCompatActivity;
 import android.view.View;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.View.OnClickListener;
 import android.widget.Button;
 import android.widget.Button;
 import android.widget.TextView;
 import android.widget.TextView;
 import android.widget.Toast;
 import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
 import me.yoqi.deleteallcontacts.utils.ContactManager;
 import me.yoqi.deleteallcontacts.utils.ContactManager;
 
 
+/**
+ * @Description: main activity
+ * @Date: 2023年03月28日 Tuesday
+ * @Author liuyuqi.gov@msn.
+ */
 public class MainActivity extends AppCompatActivity {
 public class MainActivity extends AppCompatActivity {
-	Button btnDelUser;
-	TextView tvContact;
-	Context mContext;
-	static String TAG = "me.yoqi.deleteallcontacts.MainActivity";
-	ContactManager contactManager;
-	MyHandler mHandler ;
-
-	private static class MyHandler extends Handler {
-
-		public MyHandler(Context mContext) {
-
-		}
-
-		@Override
-		public void handleMessage(Message msg) {
-			super.handleMessage(msg);
-			switch (msg.what) {
-			case 0:
-				// 更新UI
-				break;
-			}
-			super.handleMessage(msg);
-		}
-	}
-
-	@Override
-	protected void onCreate(Bundle savedInstanceState) {
-		super.onCreate(savedInstanceState);
-		setContentView(R.layout.activity_main);
-		mContext = this;
-		contactManager = new ContactManager(mContext);
-		initView();
-		initData();
-	}
-
-	void initView() {
-		btnDelUser = (Button) findViewById(R.id.btn_del_contact);
-		tvContact = (TextView) findViewById(R.id.tv_contact);
-		btnDelUser.setOnClickListener(new OnClickListener() {
-
-			@Override
-			public void onClick(View v) {
-				HashMap<String, Object> contactNum = contactManager.delAllContacts();
-				Toast.makeText(mContext, "已经删除  " + contactNum.size() + "    个联系人", Toast.LENGTH_SHORT).show();
-				initData();
-			}
-		});
-	}
-
-	void initData() {
-		mHandler = new MyHandler(this);
-
-		ArrayList<String> allContact = contactManager.getAllContact();
-		tvContact.setText(allContact.toString());
-	}
+    Button btnDelUser;
+    TextView tvContact;
+    RecyclerView rvContact;
+    Context mContext;
+    static String TAG = "me.yoqi.deleteallcontacts.MainActivity";
+    ContactManager contactManager;
+    MyHandler mHandler;
+
+    private static class MyHandler extends Handler {
+
+        public MyHandler(Context mContext) {
+
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            switch (msg.what) {
+                case 0:
+                    // 更新UI
+                    break;
+            }
+            super.handleMessage(msg);
+        }
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+        mContext = this;
+        contactManager = new ContactManager(mContext);
+        initView();
+        initData();
+        checkUpdate();
+    }
+
+    void initView() {
+        btnDelUser = (Button) findViewById(R.id.btn_del_contact);
+        tvContact = (TextView) findViewById(R.id.tv_contact);
+        rvContact = (RecyclerView) findViewById(R.id.rv_contact);
+        btnDelUser.setOnClickListener(new OnClickListener() {
+
+            @Override
+            public void onClick(View v) {
+                HashMap<String, Object> contactNum = contactManager.delAllContacts();
+                Toast.makeText(mContext, "已经删除  " + contactNum.size() + "    个联系人", Toast.LENGTH_SHORT).show();
+                initData();
+            }
+        });
+        // 请求删除联系人权限 sdk>23
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            if (!hasPermission("android.permission.WRITE_CONTACTS")) {
+                requestPermissions(new String[]{"android.permission.WRITE_CONTACTS"}, 1);
+            }
+            if (!hasPermission("android.permission.DELETE_CONTACTS")) {
+                requestPermissions(new String[]{"android.permission.DELETE_CONTACTS"}, 1);
+            }
+            if (!hasPermission("android.permission.READ_CONTACTS")) {
+                requestPermissions(new String[]{"android.permission.READ_CONTACTS"}, 1);
+            }
+            if (!hasPermission("android.permission.DELETE_SMS")) {
+                requestPermissions(new String[]{"android.permission.DELETE_SMS"}, 1);
+            }
+        }
+    }
+
+    boolean hasPermission(String permission) {
+        int res = checkCallingOrSelfPermission(permission);
+        return (res == PackageManager.PERMISSION_GRANTED);
+    }
+
+    void initData() {
+        mHandler = new MyHandler(this);
+
+        ArrayList<String> allContact = contactManager.getAllContact();
+        tvContact.setText(allContact.toString());
+    }
+
+    /**
+    * check update
+     */
+    void checkUpdate() {
+        String version = "";
+        try {
+            version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+        }
+        String checkUpdateUrl="http://www.yoqi.me/checkUpdate.php?app=me.yoqi.deleteallcontacts&version="+version;
+        
+    }
 }
 }

+ 6 - 0
app/src/main/java/me/yoqi/deleteallcontacts/model/Config.java

@@ -0,0 +1,6 @@
+class Config{
+    public static final String APP_NAME = "Delete All Contacts";
+    public static final String APP_VERSION = "1.0.0";
+    public static final String APP_AUTHOR = "Yoqi";
+    public static final String APP_AUTHOR_EMAIL = "";
+}

+ 22 - 17
app/src/main/res/layout/activity_main.xml

@@ -2,39 +2,44 @@
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_height="match_parent"
-    android:paddingBottom="@dimen/activity_vertical_margin"
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingLeft="@dimen/activity_horizontal_margin"
-    android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
-    tools:context="me.yoqi.deleteallcontacts.MainActivity" >
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    tools:context="me.yoqi.deleteallcontacts.MainActivity">
 
 
     <TextView
     <TextView
-        android:id="@+id/textView1"
+        android:id="@+id/tv_title"
         android:layout_width="wrap_content"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:text="@string/hello_world" />
+        android:layout_centerHorizontal="true"
+        android:text="@string/hello_world"
+        android:textSize="19dp" />
 
 
     <Button
     <Button
         android:id="@+id/btn_del_contact"
         android:id="@+id/btn_del_contact"
         android:layout_width="wrap_content"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_alignLeft="@+id/textView1"
-        android:layout_alignStart="@+id/btn_del_contact"
-        android:layout_below="@+id/textView1"
-        android:layout_marginLeft="57dp"
-        android:layout_marginStart="57dp"
-        android:layout_marginTop="37dp"
+        android:layout_below="@+id/tv_title"
+        android:layout_alignParentStart="true"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentRight="true"
+        android:layout_marginTop="50dp"
         android:text="删除所有联系人" />
         android:text="删除所有联系人" />
 
 
     <TextView
     <TextView
         android:id="@+id/tv_contact"
         android:id="@+id/tv_contact"
-        android:layout_width="match_parent"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_alignLeft="@+id/btn_del_contact"
-        android:layout_alignStart="@+id/btn_del_contact"
         android:layout_below="@+id/btn_del_contact"
         android:layout_below="@+id/btn_del_contact"
-        android:layout_marginTop="91dp"
-        android:scrollbars="vertical"
-        android:text="TextView" />
+        android:layout_marginTop="10dp" />
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/rv_contact"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/tv_contact"
+        android:layout_marginTop="50dp" />
 
 
 </RelativeLayout>
 </RelativeLayout>

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -2,7 +2,7 @@
 <resources>
 <resources>
 
 
     <string name="app_name">DeleteAllContacts</string>
     <string name="app_name">DeleteAllContacts</string>
-    <string name="hello_world">Hello world!</string>
+    <string name="hello_world">删除所有联系人</string>
     <string name="action_settings">Settings</string>
     <string name="action_settings">Settings</string>
 
 
 </resources>
 </resources>