Commit 32850da8 authored by DESKTOP-NFGF3PG\zxa01's avatar DESKTOP-NFGF3PG\zxa01

1. update privact choice Switch

2. add notification open download dir
parent 1a069c51
......@@ -46,8 +46,9 @@
android:screenOrientation="portrait" />
<provider
android:name=".common.tools.UsersProvider"
android:authorities="com.example.zxa01.iotclient.common.tools.UserProvider"></provider>
android:name=".common.user.UsersProvider"
android:authorities="com.example.zxa01.iotclient.common.user.UserProvider"></provider>
</application>
</manifest>
\ No newline at end of file
package com.example.zxa01.iotclient.common.tools;
package com.example.zxa01.iotclient.common.file;
import android.Manifest;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.DownloadManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Environment;
import android.os.Handler;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.widget.Toast;
import com.example.zxa01.iotclient.R;
import com.example.zxa01.iotclient.common.notification.NotificationService;
import java.io.BufferedInputStream;
import java.io.File;
......@@ -32,13 +31,10 @@ import static android.support.v4.app.ActivityCompat.requestPermissions;
public class DownloadFile {
private static final String TAG = "Download File";
public static final String CHANNELID = "118";
public static final CharSequence CHANNELCHAR = "Download Report File";
private NotificationManager notificationManager;
private Context context;
private String downloadUrl;
private String downloadFileName;
private AlertDialog dialog;
......@@ -53,6 +49,31 @@ public class DownloadFile {
new DownloadingTask().execute();
}
public boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (context.checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
return true;
} else {
requestPermissions((Activity) context,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
return false;
}
} else {
return true;
}
}
private void dialogDelay() {
new Handler().postDelayed(() -> {
}, 3000);
}
private void notification() {
new NotificationService(context, "下載成功", downloadFileName,new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS))
.build();
}
private class DownloadingTask extends AsyncTask<Void, Void, Void> {
File outputFile = null;
......@@ -93,8 +114,8 @@ public class DownloadFile {
downloadFileName = java.net.URLDecoder.decode(
connection.getHeaderField("Content-Disposition")
.substring(connection.getHeaderField("Content-Disposition").indexOf("=")+1)
.replace("UTF-8''","")
.substring(connection.getHeaderField("Content-Disposition").indexOf("=") + 1)
.replace("UTF-8''", "")
.trim(),
String.valueOf(StandardCharsets.UTF_8));
......@@ -110,11 +131,11 @@ public class DownloadFile {
outputFile.setWritable(true);
Log.e(TAG, "File Created");
}
// output handle
FileOutputStream fos = new FileOutputStream(outputFile);
InputStream input = new BufferedInputStream(url.openStream(),
8192);
InputStream input = new BufferedInputStream(url.openStream(), 8192);
OutputStream output = new FileOutputStream(outputFile.getPath());
byte[] data = new byte[1024];
long total = 0;
......@@ -147,63 +168,4 @@ public class DownloadFile {
}
public boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (context.checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
return true;
} else {
requestPermissions((Activity)context,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
return false;
}
}
else {
return true;
}
}
private void dialogDelay() {
new Handler().postDelayed(() ->{}, 3000);
}
private void notification(){
int NOTIFY_ID = 0;
NotificationCompat.Builder builder;
if (notificationManager == null) {
notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = notificationManager.getNotificationChannel(CHANNELID);
if (mChannel == null) {
mChannel = new NotificationChannel(CHANNELID, CHANNELCHAR, importance);
mChannel.enableVibration(true);
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
notificationManager.createNotificationChannel(mChannel);
}
builder = new NotificationCompat.Builder(context, CHANNELID);
builder.setContentTitle("下載成功")
.setSmallIcon(android.R.drawable.ic_popup_reminder)
.setContentText(downloadFileName)
.setDefaults(Notification.DEFAULT_ALL)
.setAutoCancel(true)
.setTicker("下載成功")
.setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
}
else {
builder = new NotificationCompat.Builder(context, CHANNELID);
builder.setContentTitle("下載成功")
.setSmallIcon(android.R.drawable.ic_popup_reminder)
.setContentText(downloadFileName)
.setDefaults(Notification.DEFAULT_ALL)
.setAutoCancel(true)
.setTicker("下載成功")
.setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400})
.setPriority(Notification.PRIORITY_HIGH);
}
Notification notification = builder.build();
notificationManager.notify(NOTIFY_ID, notification);
}
}
\ No newline at end of file
package com.example.zxa01.iotclient.common.tools;
package com.example.zxa01.iotclient.common.http;
import com.example.zxa01.iotclient.common.pojo.device.Device;
import com.example.zxa01.iotclient.common.pojo.index.PrivacyChoiceResponse;
import com.example.zxa01.iotclient.common.pojo.index.PrivacyPolicyReportResponse;
import com.example.zxa01.iotclient.common.pojo.privacy.PrivacyChoice;
import com.example.zxa01.iotclient.common.Config;
import com.example.zxa01.iotclient.common.user.Config;
import com.google.gson.GsonBuilder;
import java.util.List;
......
package com.example.zxa01.iotclient.common.notification;
import android.app.DownloadManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
public class NotificationService {
public static final String CHANNELID = "118";
private NotificationManager notificationManager;
private NotificationCompat.Builder builder;
private Context context;
private Intent intent;
private String contentTitle;
private String contentText;
public NotificationService(Context context, String contentTitle, String contentText,Intent intent) {
this.context = context;
this.contentTitle = contentTitle;
this.contentText = contentText;
this.intent = intent;
}
public void build() {
if (notificationManager == null) {
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
}
int NOTIFY_ID = 0;
builder = new NotificationCompat.Builder(context, CHANNELID);
builder.setContentTitle(contentTitle)
.setContentText(contentText)
.setTicker(contentTitle)
.setSmallIcon(android.R.drawable.ic_popup_reminder)
.setDefaults(android.app.Notification.DEFAULT_ALL)
.setAutoCancel(true)
.setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
if(intent != null){
builder.setContentIntent(PendingIntent.getActivity(context,0,intent,0));
}
android.app.Notification notification = builder.build();
notificationManager.notify(NOTIFY_ID, notification);
}
}
package com.example.zxa01.iotclient.common;
package com.example.zxa01.iotclient.common.user;
import com.example.zxa01.iotclient.common.pojo.Setting;
import com.example.zxa01.iotclient.common.pojo.auth.LoginMessage;
......
package com.example.zxa01.iotclient.common;
package com.example.zxa01.iotclient.common.user;
import com.example.zxa01.iotclient.common.pojo.auth.LoginMessage;
......
package com.example.zxa01.iotclient.common.tools;
package com.example.zxa01.iotclient.common.user;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
......@@ -13,11 +13,11 @@ import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class ECCGenerate {
public class KeyGenerate {
private static final String ALGORITHM = "AES";
public ECCGenerate() {
public KeyGenerate() {
}
public String generate() throws NoSuchAlgorithmException {
......
package com.example.zxa01.iotclient.common.tools;
package com.example.zxa01.iotclient.common.user;
import android.content.ContentProvider;
import android.content.ContentUris;
......@@ -16,8 +16,8 @@ import java.util.HashMap;
public class UsersProvider extends ContentProvider {
public static final String PROVIDER_NAME = "com.example.zxa01.iotclient.common.tools.UserProvider";
public static final String URL = "content://" + PROVIDER_NAME + "/users";
public static final String AUTHORITY = "com.example.zxa01.iotclient.common.user.UserProvider";
public static final String URL = "content://" + AUTHORITY + "/users";
public static final Uri CONTENT_URI = Uri.parse(URL);
public static final String id = "id";
......@@ -36,8 +36,8 @@ public class UsersProvider extends ContentProvider {
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, "users", uriCode);
uriMatcher.addURI(PROVIDER_NAME, "users/*", uriCode);
uriMatcher.addURI(AUTHORITY, "users", uriCode);
uriMatcher.addURI(AUTHORITY, "users/*", uriCode);
}
private SQLiteDatabase db;
......
......@@ -6,8 +6,8 @@ import android.support.annotation.NonNull;
import android.util.Log;
import com.example.zxa01.iotclient.common.pojo.index.PrivacyPolicyReportResponse;
import com.example.zxa01.iotclient.common.Config;
import com.example.zxa01.iotclient.common.tools.Api;
import com.example.zxa01.iotclient.common.user.Config;
import com.example.zxa01.iotclient.common.http.Api;
import com.example.zxa01.iotclient.common.pojo.device.Device;
import retrofit2.Call;
......
package com.example.zxa01.iotclient.component.detail;
import com.example.zxa01.iotclient.common.pojo.device.Device;
import com.example.zxa01.iotclient.common.Config;
import com.example.zxa01.iotclient.common.tools.DownloadFile;
import com.example.zxa01.iotclient.common.user.Config;
import com.example.zxa01.iotclient.common.file.DownloadFile;
import com.example.zxa01.iotclient.component.privacy.PrivacyActivity;
import android.arch.lifecycle.MutableLiveData;
import android.arch.lifecycle.ViewModel;
......
package com.example.zxa01.iotclient.component.home.device;
import com.example.zxa01.iotclient.common.tools.Api;
import com.example.zxa01.iotclient.common.http.Api;
import com.example.zxa01.iotclient.common.pojo.device.Device;
import android.arch.lifecycle.MutableLiveData;
......
......@@ -2,11 +2,10 @@ package com.example.zxa01.iotclient.component.home.device.bind;
import android.arch.lifecycle.MutableLiveData;
import android.databinding.BaseObservable;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.util.Log;
import com.example.zxa01.iotclient.common.tools.Api;
import com.example.zxa01.iotclient.common.http.Api;
import com.example.zxa01.iotclient.common.pojo.device.Device;
import retrofit2.Call;
......
......@@ -5,8 +5,8 @@ import android.databinding.BaseObservable;
import android.support.annotation.NonNull;
import android.util.Log;
import com.example.zxa01.iotclient.common.Config;
import com.example.zxa01.iotclient.common.tools.Api;
import com.example.zxa01.iotclient.common.user.Config;
import com.example.zxa01.iotclient.common.http.Api;
import com.example.zxa01.iotclient.common.pojo.index.PrivacyChoiceResponse;
import java.util.List;
......
......@@ -13,7 +13,6 @@ import com.example.zxa01.iotclient.component.privacy.PrivacyActivity;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.TimeZone;
import java.util.stream.Collectors;
public class RecordViewModel extends ViewModel {
......
......@@ -4,7 +4,7 @@ import android.arch.lifecycle.MutableLiveData;
import android.databinding.BaseObservable;
import com.example.zxa01.iotclient.common.pojo.Setting;
import com.example.zxa01.iotclient.common.Config;
import com.example.zxa01.iotclient.common.user.Config;
import java.util.List;
......
......@@ -8,7 +8,7 @@ import android.databinding.ObservableBoolean;
import com.example.zxa01.iotclient.R;
import com.example.zxa01.iotclient.common.pojo.Setting;
import com.example.zxa01.iotclient.common.Config;
import com.example.zxa01.iotclient.common.user.Config;
import com.example.zxa01.iotclient.component.login.LoginActivity;
import java.util.List;
......
package com.example.zxa01.iotclient.component.login;
import com.example.zxa01.iotclient.common.pojo.Setting;
import com.example.zxa01.iotclient.common.Config;
import com.example.zxa01.iotclient.common.user.Config;
import com.example.zxa01.iotclient.common.pojo.auth.LoginMessage;
import com.example.zxa01.iotclient.common.DefaultData;
import com.example.zxa01.iotclient.common.tools.ECCGenerate;
import com.example.zxa01.iotclient.common.tools.UsersProvider;
import com.example.zxa01.iotclient.common.user.DefaultData;
import com.example.zxa01.iotclient.common.user.KeyGenerate;
import com.example.zxa01.iotclient.common.user.UsersProvider;
import android.arch.lifecycle.MutableLiveData;
import android.content.ContentValues;
......@@ -65,7 +65,7 @@ public class LoginModel extends BaseObservable {
private void generateKey() {
try {
Config.getConfig().setKey(new ECCGenerate().generate());
Config.getConfig().setKey(new KeyGenerate().generate());
ContentValues values = new ContentValues();
values.put(UsersProvider.name,Config.getConfig().getMessage().getAccount());
values.put(UsersProvider.secret_key,Config.getConfig().getKey());
......
package com.example.zxa01.iotclient.component.login;
import com.example.zxa01.iotclient.common.DefaultData;
import com.example.zxa01.iotclient.common.user.DefaultData;
import com.example.zxa01.iotclient.component.home.HomeActivity;
import com.example.zxa01.iotclient.common.pojo.auth.LoginMessage;
import android.arch.lifecycle.MutableLiveData;
......
......@@ -32,7 +32,6 @@ public class PrivacyActivity extends AppCompatActivity {
viewModel.fetchPrivacyPolicyReportByDevice(getIntent().getStringExtra("udn"));
viewModel.observePrivacyPolicyReportMLD().observe(this, viewModel::setPrivacyPolicyReport);
viewModel.observeIsLoadingMLD().observe(this, viewModel::setIsUpload);
// viewModel.observeMappingChoiceMLD().observe(this,viewModel::);
}
@Override
......
......@@ -8,11 +8,11 @@ import android.util.Log;
import com.example.zxa01.iotclient.common.pojo.auth.User;
import com.example.zxa01.iotclient.common.pojo.index.PrivacyPolicyReportResponse;
import com.example.zxa01.iotclient.common.tools.Api;
import com.example.zxa01.iotclient.common.http.Api;
import com.example.zxa01.iotclient.common.pojo.index.PrivacyChoiceResponse;
import com.example.zxa01.iotclient.common.pojo.privacy.PrivacyChoice;
import com.example.zxa01.iotclient.common.pojo.privacy.PrivacyContent;
import com.example.zxa01.iotclient.common.Config;
import com.example.zxa01.iotclient.common.user.Config;
import retrofit2.Call;
import retrofit2.Callback;
......@@ -60,6 +60,7 @@ public class PrivacyModel extends BaseObservable {
@Override
public void onResponse(Call<PrivacyChoiceResponse> call, Response<PrivacyChoiceResponse> response) {
Log.i("setPrivacyChoice - onResponse()", "success");
readPrivacyPolicyReportByDevice(privacyContent.getDevice().getUdn());
dialogDelay();
}
......
......@@ -6,7 +6,7 @@ import com.example.zxa01.iotclient.common.pojo.index.PrivacyPolicyReportResponse
import com.example.zxa01.iotclient.common.pojo.privacy.PrivacyContent;
import com.example.zxa01.iotclient.common.pojo.privacy.PrivacyPolicy;
import com.example.zxa01.iotclient.common.pojo.privacy.PrivacyPolicyReport;
import com.example.zxa01.iotclient.common.Config;
import com.example.zxa01.iotclient.common.user.Config;
import android.arch.lifecycle.MutableLiveData;
import android.arch.lifecycle.ViewModel;
......@@ -85,6 +85,7 @@ public class PrivacyViewModel extends ViewModel {
.setDevice(privacyModel.getPrivacyPolicyReportMLD().getValue().getDevice())
.setPolicy(privacyModel.getPrivacyPolicyReportMLD().getValue().getPolicies().get(index)),
((Switch) view).isChecked());
((Switch) view).setText(((Switch) view).isChecked() ? R.string.privacy_content : R.string.privacy_reject);
}
}
......
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