Jelajahi Sumber

添加 activity

liuzhenxing1118 5 bulan lalu
induk
melakukan
25ed6c966e

+ 17 - 3
app/src/main/AndroidManifest.xml

@@ -3,15 +3,29 @@
     xmlns:tools="http://schemas.android.com/tools"
     package="com.sikey.skcontact">
 
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <application
         android:allowBackup="true"
-        android:dataExtractionRules="@xml/data_extraction_rules"
-        android:fullBackupContent="@xml/backup_rules"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/Theme.SKContact"
-        tools:targetApi="31" />
+        >
+
+        <activity
+            android:name=".activity.ContactActivity"
+            android:exported="true"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:launchMode="singleInstance">
+            <intent-filter>
+                <action android:name="action.xplora.chat"/>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+    </application>
+
 
 </manifest>

+ 17 - 0
app/src/main/java/com/sikey/skcontact/ContactApplication.java

@@ -0,0 +1,17 @@
+package com.sikey.skcontact;
+
+import android.content.Context;
+
+public class ContactApplication extends android.app.Application {
+    private static Context sContext;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        sContext = getApplicationContext();
+    }
+
+    public static Context getsContext() {
+        return sContext;
+    }
+}

+ 73 - 0
app/src/main/java/com/sikey/skcontact/activity/BaseActivity.java

@@ -0,0 +1,73 @@
+package com.sikey.skcontact.activity;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Toast;
+import androidx.annotation.Nullable;
+import com.sikey.skcontact.utils.Macros;
+
+public class BaseActivity extends Activity {
+    public String TAG = "losion / skcontact :" +  getClass().getSimpleName();
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Log.d(TAG, "onCreate: ");
+
+        if (Macros.DEBUG_FULLSCREEN) {
+            setFullView();
+            setHardKey();
+        }
+
+        onCreateBase();
+        initDataBase();
+        initViewBase();
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        onStartBase();
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        onDestroyBase();
+    }
+
+    protected void onCreateBase() { }
+    protected void onStartBase() { }
+    protected void initDataBase() { }
+    protected void initViewBase() { }
+    protected void onDestroyBase() { }
+
+    private void setFullView() {
+        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
+    }
+
+    private void setHardKey() {
+        View decorView = getWindow().getDecorView();
+        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
+        decorView.setSystemUiVisibility(uiOptions);
+    }
+
+    public void changeStatusBar(boolean isShow) {
+        if (isShow) {
+            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+        } else {
+            getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+        }
+    }
+
+    public void toast(String content) {
+        Toast t = Toast.makeText(this, content, Toast.LENGTH_SHORT);
+        t.show();
+    }
+}

+ 17 - 0
app/src/main/java/com/sikey/skcontact/activity/ContactActivity.java

@@ -0,0 +1,17 @@
+package com.sikey.skcontact.activity;
+
+import android.os.Bundle;
+import android.util.Log;
+
+import com.sikey.skcontact.R;
+
+public class ContactActivity extends BaseActivity {
+    public final String TAG = "losion / skcontact :" + getClass().getSimpleName();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        Log.d(TAG, "onCreate: ");
+        super.onCreate(savedInstanceState);
+        //setContentView(R.layout.activity_main);
+    }
+}

+ 15 - 0
app/src/main/java/com/sikey/skcontact/manager/DataManager.java

@@ -0,0 +1,15 @@
+package com.sikey.skcontact.manager;
+
+import android.content.Context;
+import android.provider.Settings;
+
+public class DataManager {
+
+    public static String getVideoUserId(Context context) {
+        return Settings.Global.getString(context.getContentResolver(), "sk_tk");
+    }
+
+    public static void setVideoUserId(Context context, String value) {
+        Settings.Global.putString(context.getContentResolver(), "sk_tk", value);
+    }
+}

+ 61 - 0
app/src/main/java/com/sikey/skcontact/manager/DatabaseUtils.java

@@ -0,0 +1,61 @@
+package com.sikey.skcontact.manager;
+
+import android.annotation.SuppressLint;
+import android.database.Cursor;
+import android.net.Uri;
+import android.util.Log;
+
+import com.sikey.skcontact.ContactApplication;
+import com.sikey.skcontact.model.ContactBean;
+import com.sikey.skcontact.utils.Macros;
+import com.sikey.skcontact.utils.MetaData;
+import com.sikey.skcontact.utils.ToolsUtils;
+
+public class DatabaseUtils {
+    public String TAG = "losion / skcontact :" + getClass().getSimpleName();
+    public DatabaseUtils() {}
+
+    @SuppressLint("Range")
+    public ContactBean loadContact(String userId) {
+        Log.d(TAG, "loadContact: ");
+        if (Macros.DEBUG) {
+            ContactBean bean = new ContactBean();
+            bean.userId = userId;
+            bean.name = "Father";
+            return bean;
+        } else {
+            Uri uri = Uri.parse(MetaData.DB_CONTACTS);
+            Cursor cursor = ContactApplication.getsContext().getContentResolver().query(uri, null, null, null, null);
+            if (cursor == null) {
+                Log.d(TAG, "loadContact: cursor == null");
+                return null;
+            }
+            if (!cursor.moveToFirst()) {
+                Log.d(TAG, "loadContact: cursor.moveToFirst() false");
+                cursor.close();
+                return null;
+            }
+
+            ContactBean bean = new ContactBean();
+            do {
+                String uId = cursor.getString(cursor.getColumnIndex("userId"));
+                if (uId.equals(userId)) {
+                    Log.d(TAG, "loadContact: find contact");
+                    bean._id = cursor.getLong(cursor.getColumnIndex("_id"));
+                    bean.id = cursor.getString(cursor.getColumnIndex("id"));
+                    bean.userId = cursor.getString(cursor.getColumnIndex("userId"));
+                    bean.name = cursor.getString(cursor.getColumnIndex("name"));
+                    bean.profile = cursor.getString(cursor.getColumnIndex("profile"));
+                    bean.profilePath = cursor.getString(cursor.getColumnIndex("profilePath"));
+                    bean.phoneNumber = cursor.getString(cursor.getColumnIndex("phoneNumber"));
+                    bean.countryPN = cursor.getString(cursor.getColumnIndex("countryPN"));
+                    bean.type = ToolsUtils.parseInt(cursor.getString(cursor.getColumnIndex("type")));
+                    bean.rate = ToolsUtils.parseInt(cursor.getString(cursor.getColumnIndex("rate")));
+                    bean.unRead = ToolsUtils.parseInt(cursor.getString(cursor.getColumnIndex("unRead")));
+                }
+            } while (cursor.moveToNext());
+            cursor.close();
+            return bean;
+        }
+    }
+}

+ 6 - 0
app/src/main/java/com/sikey/skcontact/model/BaseBean.java

@@ -0,0 +1,6 @@
+package com.sikey.skcontact.model;
+
+import java.io.Serializable;
+
+public class BaseBean implements Serializable {
+}

+ 27 - 0
app/src/main/java/com/sikey/skcontact/model/ContactBean.java

@@ -0,0 +1,27 @@
+package com.sikey.skcontact.model;
+
+public class ContactBean extends BaseBean {
+    public long _id = 0;
+    public String id = "";
+    public String userId = "";
+    public String name = "";
+    public String profile = ""; //头像
+    public String profilePath = "";//头像本地路径
+    public String phoneNumber = "";
+    public String countryPN = "";
+    public int rate = 0;
+    public int unRead = 0;
+
+    // 1 : First guardian(SOS target)
+    // 2 : Second guardian
+    // 3 : General contact(Not member of XPLORA server)
+    // 4 : Friend
+    public int type = 0;
+
+    public String beanToString() {
+        return "_id:" + _id + " id:" + id + " type:" + type + " userId:" + userId +
+                " name:" + name + " profilePath:" + profilePath +
+                " countryPN:" + countryPN + " phoneNumber : " + phoneNumber +
+                " unRead:" + unRead;
+    }
+}

+ 8 - 0
app/src/main/java/com/sikey/skcontact/observer/Listener.java

@@ -0,0 +1,8 @@
+package com.sikey.skcontact.observer;
+
+public class Listener {
+    public interface VideoListener {
+
+    }
+}
+

+ 6 - 0
app/src/main/java/com/sikey/skcontact/utils/Constant.java

@@ -0,0 +1,6 @@
+package com.sikey.skcontact.utils;
+
+public class Constant {
+    public final static String EXTRA_VIDEO_TYPE = "ExtraVideoType";
+    public final static String EXTRA_VIDEO_TARGET_ID = "ExtraVideoTargetId";
+}

+ 6 - 0
app/src/main/java/com/sikey/skcontact/utils/Macros.java

@@ -0,0 +1,6 @@
+package com.sikey.skcontact.utils;
+
+public class Macros {
+    public static boolean DEBUG = true;
+    public static boolean DEBUG_FULLSCREEN = true; //模拟器显示全屏
+}

+ 7 - 0
app/src/main/java/com/sikey/skcontact/utils/MetaData.java

@@ -0,0 +1,7 @@
+package com.sikey.skcontact.utils;
+
+public class MetaData {
+    public final static String AUTHORITIES_CONTACTS = "content://com.sikey.WatchContactProvider";
+    public final static String AUTHORITIES_CHAT = "content://com.sikey.WatchChatProvider";
+    public final static String DB_CONTACTS = AUTHORITIES_CONTACTS + "/contact";
+}

+ 62 - 0
app/src/main/java/com/sikey/skcontact/utils/ToolsUtils.java

@@ -0,0 +1,62 @@
+package com.sikey.skcontact.utils;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.widget.ImageView;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+public class ToolsUtils {
+
+    public static int dip2px(Context context, float dpValue) {
+        float scale = context.getResources().getDisplayMetrics().density;
+        return (int) (dpValue * scale + 0.5f);
+    }
+
+    public static int parseInt(String s) {
+        if (s == null || s.isEmpty())
+            return 0;
+        return Integer.parseInt(s);
+    }
+
+    public static int parseInt(String s, int defaultValue) {
+        if (s.isEmpty())
+            return defaultValue;
+        return Integer.parseInt(s);
+    }
+
+    public static void setImageView(ImageView imageView, String imagePath, int resId, int defaultId) {
+        if (resId > 0) {
+            imageView.setImageResource(resId);
+        } else if(imagePath == null || imagePath.length() <= 1) {
+            imageView.setImageResource(defaultId);
+        } else {
+            Bitmap loacalImage = getLoacalBitmap(imagePath);
+            if(null == loacalImage){
+                imageView.setImageResource(defaultId);
+            } else {
+                imageView.setImageBitmap(loacalImage);
+            }
+        }
+    }
+
+    public static Bitmap getLoacalBitmap(String url) {
+        try {
+            FileInputStream fis = new FileInputStream(url);
+            return BitmapFactory.decodeStream(fis);  ///把流转化为Bitmap图片
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static boolean isNetworkAvailable(Context context) {
+        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
+        return networkInfo != null && networkInfo.isAvailable();
+    }
+}