Skip to content

Commit a710e50

Browse files
author
lucas
committed
notification 获取下载的apk文件名 icon等信息。安装完成后删除安装文件
1 parent 165facd commit a710e50

File tree

3 files changed

+79
-11
lines changed

3 files changed

+79
-11
lines changed

VideoOS/VenvyLibrary/src/main/java/cn/com/venvy/common/utils/VenvyFileUtil.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
import android.Manifest;
44
import android.annotation.SuppressLint;
55
import android.content.Context;
6+
import android.content.pm.ApplicationInfo;
67
import android.content.pm.PackageInfo;
78
import android.content.pm.PackageManager;
9+
import android.graphics.drawable.Drawable;
810
import android.os.Environment;
911
import android.support.annotation.NonNull;
1012
import android.text.TextUtils;
@@ -513,4 +515,56 @@ public static String getPackageNameByApkFile(Context context, String filePath) {
513515
PackageInfo pi = packageManager.getPackageArchiveInfo(filePath, 0);
514516
return pi != null ? pi.applicationInfo != null ? pi.applicationInfo.packageName : "" : "";
515517
}
518+
519+
520+
/**
521+
* 获取APK图标
522+
*
523+
* @param context
524+
* @param apkPath
525+
* @return
526+
*/
527+
public static Drawable getApkIcon(Context context, String apkPath) {
528+
529+
PackageManager packageManager = context.getPackageManager();
530+
PackageInfo pi = packageManager.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES);
531+
532+
if (pi != null) {
533+
ApplicationInfo appInfo = pi.applicationInfo;
534+
appInfo.sourceDir = apkPath;
535+
appInfo.publicSourceDir = apkPath;
536+
try {
537+
return appInfo.loadIcon(packageManager);
538+
} catch (Exception e) {
539+
e.printStackTrace();
540+
}
541+
}
542+
return null;
543+
}
544+
545+
546+
/**
547+
* 获取APK名称
548+
*
549+
* @param context
550+
* @param apkPath
551+
* @return
552+
*/
553+
public static String getApkLabel(Context context, String apkPath) {
554+
PackageManager packageManager = context.getPackageManager();
555+
PackageInfo pi = packageManager.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES);
556+
557+
if (pi != null) {
558+
ApplicationInfo appInfo = pi.applicationInfo;
559+
appInfo.sourceDir = apkPath;
560+
appInfo.publicSourceDir = apkPath;
561+
try {
562+
return appInfo.loadLabel(packageManager).toString();
563+
} catch (Exception e) {
564+
e.printStackTrace();
565+
}
566+
}
567+
return "";
568+
}
569+
516570
}

VideoOS/VenvyLibrary/src/main/java/cn/com/venvy/common/webview/JsBridge.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,11 +263,8 @@ public void openAds(String jsParams) {
263263
return;
264264
try {
265265
JSONObject msgObject = new JSONObject(jsParams);
266-
if (msgObject == null) {
267-
return;
268-
}
269266
JSONObject jsonObject = msgObject.optJSONObject("msg");
270-
if (msgObject == null) {
267+
if (jsonObject == null) {
271268
return;
272269
}
273270
if (jsonObject.has("targetType")) {

VideoOS/venvy_pub/src/main/java/cn/com/videopls/pub/VideoAdsHandler.java

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import android.content.BroadcastReceiver;
88
import android.content.Context;
99
import android.content.Intent;
10+
import android.graphics.Bitmap;
1011
import android.graphics.BitmapFactory;
12+
import android.graphics.drawable.Drawable;
1113
import android.net.Uri;
1214
import android.os.Build;
1315
import android.os.Bundle;
@@ -17,6 +19,8 @@
1719
import android.support.v4.content.FileProvider;
1820
import android.text.TextUtils;
1921

22+
import com.taobao.luaview.util.DrawableUtil;
23+
2024
import org.json.JSONException;
2125
import org.json.JSONObject;
2226

@@ -88,7 +92,7 @@ public void initData(Bundle bundle, String fileProviderAuthorities) {
8892
}
8993

9094

91-
private void initNotification() {
95+
private void initNotification(String fileName) {
9296
Context context = platform.getContentViewGroup().getContext();
9397
if (notificationManager == null) {
9498
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
@@ -104,7 +108,7 @@ private void initNotification() {
104108
.setSmallIcon(notificationIconRes)
105109
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), notificationIconRes))
106110
.setAutoCancel(false)
107-
.setContentTitle("开始下载")
111+
.setContentTitle("开始下载 " + fileName)
108112
.setContentText("准备下载")
109113
.setProgress(100, 0, false);
110114
notification = builderO.build();
@@ -136,7 +140,8 @@ public void execDownloadTask() {
136140
if (mDownloadTaskRunner == null) {
137141
mDownloadTaskRunner = new DownloadTaskRunner(platform);
138142
}
139-
final String filePath = VenvyFileUtil.getCachePath(platform.getContentViewGroup().getContext()) + LUA_CACHE_PATH + File.separator + Uri.parse(downloadAPI).getLastPathSegment();
143+
final String fileName = Uri.parse(downloadAPI).getLastPathSegment();
144+
final String filePath = VenvyFileUtil.getCachePath(platform.getContentViewGroup().getContext()) + LUA_CACHE_PATH + File.separator + fileName;
140145
VenvyLog.d("download to : " + filePath);
141146
DownloadTask downloadTask = new DownloadTask(platform.getContentViewGroup().getContext(), downloadAPI, filePath, true);
142147
mDownloadTaskRunner.startTask(downloadTask, new TaskListener<DownloadTask, Boolean>() {
@@ -150,7 +155,7 @@ public void onTaskStart(DownloadTask downloadTask) {
150155
VenvyLog.d("onTaskStart");
151156
trackToVideoOS("4");
152157
uploadTrack(dsTrackLinks); // 开始下载上报track
153-
initNotification();
158+
initNotification(fileName);
154159
}
155160

156161
@Override
@@ -187,15 +192,20 @@ public void onTaskSuccess(DownloadTask downloadTask, Boolean aBoolean) {
187192
notifyIntent.putExtra("filePath", filePath);
188193
notifyIntent.putExtra("fileProvider", fileProviderAuthorities);
189194
PendingIntent pendingIntent = PendingIntent.getBroadcast(platform.getContentViewGroup().getContext(), 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
195+
Drawable icon = VenvyFileUtil.getApkIcon(platform.getContentViewGroup().getContext(), filePath);
196+
Bitmap largeIcon = icon == null ? BitmapFactory.decodeResource(platform.getContentViewGroup().getContext().getResources(), notificationIconRes) : DrawableUtil.drawableToBitmap(icon);
197+
String fileLabel = VenvyFileUtil.getApkLabel(platform.getContentViewGroup().getContext(), filePath);
190198
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
191-
notification = builderO.setContentTitle("下载完成")
199+
notification = builderO.setContentTitle("下载完成 " + fileLabel)
192200
.setContentText("点击安装")
193201
.setAutoCancel(true)
202+
.setLargeIcon(largeIcon)
194203
.setContentIntent(pendingIntent).build();
195204
} else {
196-
notification = builder.setContentTitle("下载完成")
205+
notification = builder.setContentTitle("下载完成 " + fileLabel)
197206
.setContentText("点击安装")
198207
.setAutoCancel(true)
208+
.setLargeIcon(largeIcon)
199209
.setContentIntent(pendingIntent).build();
200210
}
201211

@@ -244,7 +254,7 @@ private void trackToVideoOS(String eventType) {
244254
}
245255
}
246256

247-
private void registerAppReceiver(String filePath) {
257+
private void registerAppReceiver(final String filePath) {
248258
String filePackageName = VenvyFileUtil.getPackageNameByApkFile(platform.getContentViewGroup().getContext(), filePath);
249259

250260
if (TextUtils.isEmpty(filePackageName)) return;
@@ -259,6 +269,13 @@ public void onAppInstall(String packageName) {
259269
uploadTrack(instTrackLinks);
260270
trackToVideoOS("7");
261271
VenvyLog.d("onAppInstall track: " + packageName);
272+
273+
// delete installed file
274+
File file = new File(filePath);
275+
if (file.exists()) {
276+
file.delete();
277+
}
278+
262279
}
263280

264281
@Override

0 commit comments

Comments
 (0)