Commit 060588ca by sikang

默认短信、百度活体Demo

parent 8072c988
...@@ -10,7 +10,7 @@ android { ...@@ -10,7 +10,7 @@ android {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk { ndk {
abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a' abiFilters 'armeabi-v7a'//,'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
} }
} }
buildTypes { buildTypes {
......
...@@ -216,6 +216,7 @@ ...@@ -216,6 +216,7 @@
<!-- provides ongoing call UI --> <!-- provides ongoing call UI -->
<intent-filter> <intent-filter>
<action android:name="android.intent.action.DIAL" /> <action android:name="android.intent.action.DIAL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
</activity> </activity>
......
...@@ -69,6 +69,8 @@ public class LibConfig { ...@@ -69,6 +69,8 @@ public class LibConfig {
public static int LOADING_BACKGROUND;//loading旋转背景 public static int LOADING_BACKGROUND;//loading旋转背景
public static int MAIN_COLOR;//主题色 public static int MAIN_COLOR;//主题色
public static ButterKnifeBinder butterKnifeBinder; public static ButterKnifeBinder butterKnifeBinder;
public static Context getContext() { public static Context getContext() {
...@@ -121,6 +123,8 @@ public class LibConfig { ...@@ -121,6 +123,8 @@ public class LibConfig {
OctopusManager.getInstance().setTitleColorResId(R.color.white); OctopusManager.getInstance().setTitleColorResId(R.color.white);
OctopusManager.getInstance().setShowWarnDialog(true); OctopusManager.getInstance().setShowWarnDialog(true);
OctopusManager.getInstance().setStatusBarBg(MAIN_COLOR); OctopusManager.getInstance().setStatusBarBg(MAIN_COLOR);
// FirebaseDynamicLinks.getInstance() // FirebaseDynamicLinks.getInstance()
// .getDynamicLink(getIntent()) // .getDynamicLink(getIntent())
// .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() { // .addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
......
...@@ -31,9 +31,14 @@ public abstract class BaseApplication extends MultiDexApplication { ...@@ -31,9 +31,14 @@ public abstract class BaseApplication extends MultiDexApplication {
super.onCreate(); super.onCreate();
AppLanguageUtils.setLanguage(this, LibConfig.LANGUAGE); AppLanguageUtils.setLanguage(this, LibConfig.LANGUAGE);
LibConfig.initLib(this); LibConfig.initLib(this);
afterOnCreate();
} }
public abstract void afterOnCreate();
public abstract void initLibCnofig(); public abstract void initLibCnofig();
} }
package tech.starwin.service.sms; package tech.starwin.service.sms;
import android.app.PendingIntent;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Telephony; import android.provider.Telephony;
import android.support.v4.app.NotificationCompat;
import android.telephony.SmsMessage; import android.telephony.SmsMessage;
import tech.starwin.LibConfig; import tech.starwin.LibConfig;
import tech.starwin.R;
import tech.starwin.utils.LogUtils; import tech.starwin.utils.LogUtils;
import tech.starwin.utils.PreferencesManager;
import tech.starwin.utils.context_utils.ActivityJumper;
import tech.starwin.utils.ui_utils.UIHelper; import tech.starwin.utils.ui_utils.UIHelper;
/** /**
...@@ -26,37 +28,54 @@ public class SmsReceiver extends BroadcastReceiver { ...@@ -26,37 +28,54 @@ public class SmsReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
LibConfig.getContext().getPackageManager().clearPackagePreferredActivities(LibConfig.APPLICATION_ID); LibConfig.getContext().getPackageManager().clearPackagePreferredActivities(LibConfig.APPLICATION_ID);
if ("android.provider.Telephony.SMS_RECEIVED".equals(intent.getAction())) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Bundle bundle = intent.getExtras(); //如果是默认短信应用,收到短信主动保存到数据库
if (bundle != null) { if ("android.provider.Telephony.SMS_RECEIVED".equals(intent.getAction()) && Telephony.Sms.getDefaultSmsPackage(context).equals(context.getPackageName())) {
Object[] pdus = (Object[]) bundle.get("pdus"); Bundle bundle = intent.getExtras();
for (int i = 0; i < pdus.length; i++) { if (bundle != null) {
//提取短信内容 Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage msg = SmsMessage.createFromPdu((byte[]) pdus[i]); for (int i = 0; i < pdus.length; i++) {
String msgBody = msg.getMessageBody(); //提取短信内容
String msgAddress = msg.getOriginatingAddress(); SmsMessage msg = SmsMessage.createFromPdu((byte[]) pdus[i]);
//插入一条短信到数据库 String msgBody = msg.getMessageBody();
ContentValues values = new ContentValues(); String msgAddress = msg.getOriginatingAddress();
values.put("date", msg.getTimestampMillis());//发送时间 //插入一条短信到数据库
values.put("read", 0);//阅读状态 0:未读 1:已读 ContentValues values = new ContentValues();
values.put("type", 1);//1为收 2为发 values.put("date", msg.getTimestampMillis());//发送时间
values.put("address", msgAddress);//送达号码 values.put("read", 0);//阅读状态 0:未读 1:已读
values.put("body", msgBody);//送达内容 values.put("type", 1);//1为收 2为发
context.getContentResolver().insert(Uri.parse("content://sms/sent"), values);//插入短信库 values.put("address", msgAddress);//送达号码
long msgDate = msg.getTimestampMillis(); values.put("body", msgBody);//送达内容
LogUtils.d("cky", "message from: " + msgAddress + ", message body: " + msgBody + ", message date: " + msgDate); context.getContentResolver().insert(Uri.parse("content://sms/sent"), values);//插入短信库
long msgDate = msg.getTimestampMillis();
LogUtils.d("cky", "message from: " + msgAddress + ", message body: " + msgBody + ", message date: " + msgDate);
//通知栏提醒
notifySms(context, msgAddress, msgBody);
}
} }
// TODO 弹出短信通知,点击通知跳转短信列表或详情页
// ActivityJumper.startSmsList(context);
} }
} }
}
/**
* 添加一条短信通知
*/
public void notifySms(Context context, String title, String body) {
//点击通知栏进入系统短信列表
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("vnd.android-dir/mms-sms");
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, LibConfig.APPLICATION_ID)
.setContentTitle(title)
// 设置通知时间,此事件用于通知栏排序
.setContentText(body)
.setSmallIcon(R.mipmap.ic_launcher)
.setTicker(title)
.setContentIntent(pendingIntent);
UIHelper.notifyNotification(context, builder);
// ActivityJumper.startSmsList(context);
// String defaultPkg = PreferencesManager.get().getDefaultSmsPackage();
// Intent systemIntent = new Intent(intent.getAction(), intent.getData());
// systemIntent.putExtras(intent.getExtras());
// systemIntent.setPackage(defaultPkg);
// context.sendBroadcast(systemIntent);
} }
} }
...@@ -6,6 +6,7 @@ import android.graphics.Matrix; ...@@ -6,6 +6,7 @@ import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.media.ExifInterface; import android.media.ExifInterface;
import android.util.Base64;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.File; import java.io.File;
...@@ -260,6 +261,14 @@ public class BitmapUtils { ...@@ -260,6 +261,14 @@ public class BitmapUtils {
/** /**
* Base64 转 bitmap
*/
public static Bitmap base64ToBitmap(String base64) {
byte[] decode = Base64.decode(base64, Base64.DEFAULT);
return BitmapFactory.decodeByteArray(decode, 0, decode.length);
}
/**
* Drawable转Bitmap * Drawable转Bitmap
*/ */
public static Bitmap drawableToBmp(Drawable drawable) { public static Bitmap drawableToBmp(Drawable drawable) {
......
...@@ -5,6 +5,13 @@ import android.content.Context; ...@@ -5,6 +5,13 @@ import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.text.TextUtils; import android.text.TextUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.json.JSONException;
import org.json.JSONStringer;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import tech.starwin.mvp.beans.GatewayInfoBean; import tech.starwin.mvp.beans.GatewayInfoBean;
...@@ -109,7 +116,7 @@ public class PreferencesManager { ...@@ -109,7 +116,7 @@ public class PreferencesManager {
} }
/** /**
* 存取活体识别截图 * 存取依图活体识别截图
*/ */
public void saveVerificationData(byte[] data) { public void saveVerificationData(byte[] data) {
if (data == null) { if (data == null) {
...@@ -124,6 +131,7 @@ public class PreferencesManager { ...@@ -124,6 +131,7 @@ public class PreferencesManager {
} }
/** /**
* 更新政策 是否同意 状态 * 更新政策 是否同意 状态
*/ */
......
...@@ -76,16 +76,6 @@ public class ActivityJumper { ...@@ -76,16 +76,6 @@ public class ActivityJumper {
} }
/**
* 短信列表界面
*/
public static void startSmsList(Context context) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("vnd.android-dir/mms-sms");
context.startActivity(intent);
}
public static class Builder { public static class Builder {
private Intent intent; private Intent intent;
private Context fromContext; private Context fromContext;
......
...@@ -107,26 +107,10 @@ public class PermissionsHelper { ...@@ -107,26 +107,10 @@ public class PermissionsHelper {
} }
/**
* 申请将指定包设置为默认短信应用(无Dialog提示)
*/
public static void resetDefaultSms(Context context) {
try {
String defaultPkg = PreferencesManager.get().getDefaultSmsPackage();
if (!TextUtils.isEmpty(defaultPkg)) {
Class<?> smsClass = Class.forName("com.android.internal.telephony.SmsApplication");
Method method = smsClass.getMethod("setDefaultApplication", String.class, Context.class);
method.invoke(null, defaultPkg, context);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/** /**
* 申请将指定包设置为默认短信应用 * 申请将指定包设置为默认短信应用
*/ */
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public static void setDefaultSmsApp(FragmentActivity activity, EasyActivityResult.OnResultListener listener) { public static void setDefaultSmsApp(FragmentActivity activity, EasyActivityResult.OnResultListener listener) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
String defaultPkg = Telephony.Sms.getDefaultSmsPackage(activity); String defaultPkg = Telephony.Sms.getDefaultSmsPackage(activity);
...@@ -138,13 +122,14 @@ public class PermissionsHelper { ...@@ -138,13 +122,14 @@ public class PermissionsHelper {
} else { } else {
listener.onActivityResult(0, Activity.RESULT_OK, null); listener.onActivityResult(0, Activity.RESULT_OK, null);
} }
}else{
listener.onActivityResult(0, Activity.RESULT_CANCELED, null);
} }
} }
/** /**
* 申请将指定包设置为默认电话应用 * 申请将指定包设置为默认电话应用
*/ */
@RequiresApi(api = Build.VERSION_CODES.M)
public static void setDefaultPhoneCallApp(FragmentActivity activity, EasyActivityResult.OnResultListener listener) { public static void setDefaultPhoneCallApp(FragmentActivity activity, EasyActivityResult.OnResultListener listener) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
TelecomManager tm = (TelecomManager) activity.getSystemService(Activity.TELECOM_SERVICE); TelecomManager tm = (TelecomManager) activity.getSystemService(Activity.TELECOM_SERVICE);
...@@ -155,6 +140,8 @@ public class PermissionsHelper { ...@@ -155,6 +140,8 @@ public class PermissionsHelper {
} else { } else {
listener.onActivityResult(0, Activity.RESULT_OK, null); listener.onActivityResult(0, Activity.RESULT_OK, null);
} }
}else{
listener.onActivityResult(0, Activity.RESULT_CANCELED, null);
} }
} }
......
package tech.starwin.utils.ui_utils; package tech.starwin.utils.ui_utils;
import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.app.Instrumentation; import android.app.Instrumentation;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.annotation.ColorRes; import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes; import android.support.annotation.DrawableRes;
import android.support.annotation.IdRes; import android.support.annotation.IdRes;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi;
import android.support.annotation.StringRes; import android.support.annotation.StringRes;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
...@@ -37,6 +44,8 @@ import io.reactivex.Observable; ...@@ -37,6 +44,8 @@ import io.reactivex.Observable;
import io.reactivex.ObservableEmitter; import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe; import io.reactivex.ObservableOnSubscribe;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import tech.starwin.LibConfig;
import tech.starwin.R;
import tech.starwin.utils.BitmapUtils; import tech.starwin.utils.BitmapUtils;
import tech.starwin.widget.PageStateLayout; import tech.starwin.widget.PageStateLayout;
...@@ -179,11 +188,29 @@ public class UIHelper { ...@@ -179,11 +188,29 @@ public class UIHelper {
textView.setText(builder); textView.setText(builder);
} }
/** /**
* public void * 显示通知
* */
* */ public static void notifyNotification(Context context, NotificationCompat.Builder builder) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
builder.setWhen(System.currentTimeMillis())
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setOngoing(true);
// 兼容android O
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(LibConfig.APPLICATION_ID, LibConfig.APPLICATION_ID, NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);
builder.setChannelId(LibConfig.APPLICATION_ID);
}
// 通知系统展示通知栏
notificationManager.notify("test", 111, builder.build());
}
/** /**
* 打开软键盘 * 打开软键盘
......
...@@ -244,7 +244,7 @@ ...@@ -244,7 +244,7 @@
<string name="text_shoot_kpt_front">Foto Halaman Depan KTP</string> <string name="text_shoot_kpt_front">Foto Halaman Depan KTP</string>
<string name="text_shoot_photo_clear_tips">Foto harus jelas</string> <string name="text_shoot_photo_clear_tips">Foto harus jelas</string>
<string name="text_button_start_taking_photos">Mulai</string> <string name="text_button_start_taking_photos">Mulai</string>
<string name="text_cancel">Batal</string> <string name="text_cancel">Batal</string>P
<string name="text_rejected">Ditolak</string> <string name="text_rejected">Ditolak</string>
<string name="text_in_review">Dalam proses</string> <string name="text_in_review">Dalam proses</string>
<string name="text_take_photo_tips">Klik lagi untuk kirim atau klik tombol "Batal" untuk membatalkan</string> <string name="text_take_photo_tips">Klik lagi untuk kirim atau klik tombol "Batal" untuk membatalkan</string>
......
...@@ -18,13 +18,28 @@ ...@@ -18,13 +18,28 @@
<!--&lt;!&ndash;<item name="android:windowExitAnimation">@android:anim/fade_out</item>&ndash;&gt;--> <!--&lt;!&ndash;<item name="android:windowExitAnimation">@android:anim/fade_out</item>&ndash;&gt;-->
<!--</style>--> <!--</style>-->
<style name="default_animation" parent="@android:style/Animation.Translucent">
<item name="android:windowEnterAnimation">@anim/slide_open_enter</item>
<item name="android:windowExitAnimation">@anim/slide_close_exit</item>
<item name="android:taskOpenEnterAnimation">@anim/slide_open_enter</item>
<item name="android:taskOpenExitAnimation">@anim/slide_open_exit</item>
<item name="android:activityOpenEnterAnimation">@anim/slide_open_enter</item>
<item name="android:activityOpenExitAnimation">@anim/slide_open_exit</item>
<item name="android:activityCloseEnterAnimation">@anim/slide_close_enter</item>
<item name="android:activityCloseExitAnimation">@anim/slide_close_exit</item>
<item name="android:taskCloseEnterAnimation">@anim/slide_close_enter</item>
<item name="android:taskCloseExitAnimation">@anim/slide_close_exit</item>
<item name="android:taskToBackEnterAnimation">@anim/slide_close_enter</item>
<item name="android:taskToBackExitAnimation">@anim/slide_close_exit</item>
</style>
<style name="style_bg_transparent_dialog" parent="Base.Theme.AppCompat.Light.Dialog"> <style name="style_bg_transparent_dialog" parent="Base.Theme.AppCompat.Light.Dialog">
<item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item> <item name="android:windowIsTranslucent">true</item>
</style> </style>
<style name="QMTheme" parent="QMUI.Compat.NoActionBar"> <style name="QMTheme" parent="QMUI.Compat.NoActionBar">
<!--<item name="android:windowAnimationStyle">@style/noAnimation</item>--> <item name="android:windowAnimationStyle">@style/default_animation</item>
<item name="android:windowIsTranslucent">true</item> <item name="android:windowIsTranslucent">true</item>
<!-- toolbar(actionbar)颜色 --> <!-- toolbar(actionbar)颜色 -->
<item name="colorPrimary">@color/main_color</item> <item name="colorPrimary">@color/main_color</item>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment