Salutations à vous !
Dans le cadre d'un projet, je dois récupérer un certificat sur mon téléphone. Celui-ci se génère en remplissant un formulaire sur un serveur. Une fois généré, l'URL du certificat est converti en QRcode et c'est mon appli qui entre en jeu.
Elle doit lire le QRcode et lancer le téléchargement du fichier. Ce que je faisais avant c'était de rediriger l'URL lue vers un navigateur qui lançait le téléchargement mais pour des raisons de sécurité et la suite de mon projet, je veux que le fichier se télécharge dans le répertoire de mon application. Pour cela je dois bien lancer le téléchargement via mon appli une fois le QRcode décodé.
Voici la partie intéressante :
Je n'ai laissé que les fonctions propres à mon problème : ma pop-up du progressdialog se lance avant de se refermer et de m'afficher mon layout de fond, sans réaliser de téléchargement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 public class MainActivity extends Activity { public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == 0) { if (resultCode == RESULT_OK) { String contents = intent.getStringExtra("SCAN_RESULT"); setContentView(R.layout.activity_download); DownloadTask mDownload = new DownloadTask(); mDownload.execute(contents); } } } class DownloadTask extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); showDialog(progress_bar_type); } @Override protected String doInBackground(String ...f_url) { int count; try { URL url = new URL(f_url[0]); URLConnection connection = url.openConnection(); connection.connect(); int fileLength = connection.getContentLength(); InputStream input = new BufferedInputStream(url.openStream(), 8192); output = openFileOutput(url.getFile().substring(url.getFile().lastIndexOf('/') + 1), MODE_PRIVATE); byte data[] = new byte[1024]; long total = 0; while ((count = input.read(data)) != -1) { total += count; publishProgress("" + (int)((total * 100) / fileLength)); output.write(data, 0, count); } output.flush(); output.close(); input.close(); } catch (Exception e){ Log.e("Error: ", e.getMessage()); } return null; } @Override protected void onProgressUpdate(String... values) { pDialog.setProgress(Integer.parseInt(values[0])); } @Override protected void onPostExecute(String s) { dismissDialog(progress_bar_type); //String filePath = Environment.getExternalStorageDirectory().toString() + "/sdcard/TESTFILE001"; //lancer l'installation du certificat } } }
Pourquoi ? :c J'ai du mal à cerner le problème...
Pour vérifier si mon fichier s'est télécharger ou non, j'aimerai l'ouvrir (lancer l'installation dans le cas de mon certificat), malheureusement mon ami google ne m'informe pas beaucoup des fonctions à utiliser.
Partager