添加通知
This commit is contained in:
parent
d3ccf82ae1
commit
c4807b10ce
@ -0,0 +1,89 @@
|
|||||||
|
package top.jerryyan.RN.A.VersionUpgrade;
|
||||||
|
|
||||||
|
import android.app.Notification;
|
||||||
|
import android.app.NotificationChannel;
|
||||||
|
import android.app.NotificationManager;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.os.Build;
|
||||||
|
|
||||||
|
import androidx.core.app.NotificationCompat;
|
||||||
|
|
||||||
|
public class ProgressNotificationUtil {
|
||||||
|
|
||||||
|
private static NotificationManager manager;
|
||||||
|
|
||||||
|
private static NotificationManager getManager(Context context) {
|
||||||
|
if (manager == null) {
|
||||||
|
manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
|
}
|
||||||
|
return manager;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static NotificationCompat.Builder getNotificationBuilder(Context mContext, String title
|
||||||
|
, String content, String channelId) {
|
||||||
|
//大于8.0
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
//id随便指定
|
||||||
|
NotificationChannel channel = new NotificationChannel(channelId
|
||||||
|
, mContext.getPackageName(), NotificationManager.IMPORTANCE_DEFAULT);
|
||||||
|
channel.canBypassDnd();//可否绕过,请勿打扰模式
|
||||||
|
channel.enableLights(true);//闪光
|
||||||
|
channel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);//锁屏显示通知
|
||||||
|
channel.setLightColor(Color.RED);//指定闪光是的灯光颜色
|
||||||
|
channel.canShowBadge();//桌面laucher消息角标
|
||||||
|
channel.enableVibration(true);//是否允许震动
|
||||||
|
channel.setSound(null, null);
|
||||||
|
//channel.getAudioAttributes();//获取系统通知响铃声音配置
|
||||||
|
channel.getGroup();//获取通知渠道组
|
||||||
|
channel.setBypassDnd(true);//设置可以绕过,请勿打扰模式
|
||||||
|
channel.setVibrationPattern(new long[]{100, 100, 200});//震动的模式,震3次,第一次100,第二次100,第三次200毫秒
|
||||||
|
channel.shouldShowLights();//是否会闪光
|
||||||
|
//通知管理者创建的渠道
|
||||||
|
getManager(mContext).createNotificationChannel(channel);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return new NotificationCompat.Builder(mContext, channelId).setAutoCancel(true)
|
||||||
|
.setContentTitle(title)
|
||||||
|
.setContentText(content).setSmallIcon(R.mipmap.ic_launcher);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param title
|
||||||
|
* @param content
|
||||||
|
* @param manageId
|
||||||
|
* @param channelId
|
||||||
|
* @param progress
|
||||||
|
* @param maxProgress
|
||||||
|
*/
|
||||||
|
public static void showNotificationProgress(Context mContext, String title
|
||||||
|
, String content, int manageId, String channelId
|
||||||
|
, int progress, int maxProgress) {
|
||||||
|
final NotificationCompat.Builder builder = getNotificationBuilder(mContext, title, content, channelId);
|
||||||
|
/* Intent intent = new Intent(this, SecondeActivity.class);
|
||||||
|
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
|
||||||
|
builder.setContentIntent(pendingIntent);*/
|
||||||
|
builder.setOnlyAlertOnce(true);
|
||||||
|
builder.setDefaults(Notification.FLAG_ONLY_ALERT_ONCE);
|
||||||
|
builder.setProgress(maxProgress, progress, false);
|
||||||
|
builder.setWhen(System.currentTimeMillis());
|
||||||
|
getManager(mContext).notify(manageId, builder.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void showNotificationProgressApkDown(Context mContext
|
||||||
|
, int progress) {
|
||||||
|
final NotificationCompat.Builder builder = getNotificationBuilder(mContext, "正在下载", "悠游云驾", "yunjia");
|
||||||
|
builder.setOnlyAlertOnce(true);
|
||||||
|
builder.setDefaults(Notification.FLAG_ONLY_ALERT_ONCE);
|
||||||
|
builder.setProgress(100, progress, false);
|
||||||
|
builder.setWhen(System.currentTimeMillis());
|
||||||
|
getManager(mContext).notify(R.drawable.ic_launcher, builder.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void cancleNotification(Context mContext, int manageId) {
|
||||||
|
getManager(mContext).cancel(manageId);
|
||||||
|
}
|
||||||
|
}
|
@ -120,18 +120,9 @@ public class UpgradeModule extends ReactContextBaseJavaModule {
|
|||||||
.url(DOWNLOAD_URL)
|
.url(DOWNLOAD_URL)
|
||||||
.method("GET", null)
|
.method("GET", null)
|
||||||
.build();
|
.build();
|
||||||
Call call = okHttpClient.newCall(request);
|
final Call call = okHttpClient.newCall(request);
|
||||||
final Handler handler = new DoInstallHandler(this);
|
final Handler handler = new DoInstallHandler(this);
|
||||||
if(!this._hasPermissionToInstall()) this._requestInstallPermission();
|
if(!this._hasPermissionToInstall()) this._requestInstallPermission();
|
||||||
final ProgressDialog dialog = new ProgressDialog(reactContext.getCurrentActivity());
|
|
||||||
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
|
|
||||||
dialog.setCanceledOnTouchOutside(false);
|
|
||||||
dialog.setCancelable(false);
|
|
||||||
dialog.setTitle(TITLE);
|
|
||||||
dialog.setMessage("正在下载中,请稍后...");
|
|
||||||
dialog.setProgress(0);
|
|
||||||
dialog.setMax(1000);
|
|
||||||
dialog.show();
|
|
||||||
call.enqueue(new Callback() {
|
call.enqueue(new Callback() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Call call, IOException e) {
|
public void onFailure(Call call, IOException e) {
|
||||||
@ -155,21 +146,13 @@ public class UpgradeModule extends ReactContextBaseJavaModule {
|
|||||||
while ((len = stream.read(buffer)) != -1) {
|
while ((len = stream.read(buffer)) != -1) {
|
||||||
fileOutputStream.write(buffer, 0, len);
|
fileOutputStream.write(buffer, 0, len);
|
||||||
current += len;
|
current += len;
|
||||||
dialog.setProgress((int)((1000.0f*current)/total));
|
ProgressNotificationUtil.showNotificationProgressApkDown(reactContext, (int)((100.0f*current)/total));
|
||||||
}
|
}
|
||||||
fileOutputStream.flush();
|
fileOutputStream.flush();
|
||||||
final Message message = new Message();
|
final Message message = new Message();
|
||||||
message.what = 0;
|
message.what = 0;
|
||||||
message.obj = file.toURI().toString();
|
message.obj = file.toURI().toString();
|
||||||
handler.sendMessage(message);
|
handler.sendMessage(message);
|
||||||
dialog.setButton(ProgressDialog.BUTTON_POSITIVE, "更新",
|
|
||||||
new DialogInterface.OnClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
|
||||||
handler.sendMessage(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Log.e("REQUEST FAILED", "AAA", e);
|
Log.e("REQUEST FAILED", "AAA", e);
|
||||||
} finally {
|
} finally {
|
||||||
@ -264,9 +247,7 @@ final class DoInstallHandler extends Handler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleMessage(Message message) {
|
public void handleMessage(Message message) {
|
||||||
if(!module._hasPermissionToInstall()) {
|
if(module._hasPermissionToInstall()) {
|
||||||
module._requestInstallPermission();
|
|
||||||
}else{
|
|
||||||
if(message.what == 0){
|
if(message.what == 0){
|
||||||
String fileUri = (String)message.obj;
|
String fileUri = (String)message.obj;
|
||||||
module.installPackage(fileUri);
|
module.installPackage(fileUri);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user