2017-07-20 2 views
0

Je travaille sur l'exportation de données dans mon application. Je sais comment créer le Intent qui me laisse faire mais la chose que je ne peux pas traiter est Blob URL que j'ai eu dans la demande. Je n'ai aucune idée de comment en tirer une image. Voici comment il ressemble:Comment intercepter l'URL blob dans Android?

I/System.out: blob:null/f7da72d2-a7a7-4cb5-987b-d1e392a14bf1

Et voici ma méthode dans la classe qui étend WebViewClient:

@Override 
    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { 


     if(request.getUrl() != null && request.getUrl().toString().startsWith("blob:")){ 
//This is my miserable attempt to do get the data from blob url.. 
      String stringURL = request.getUrl().toString(); 
      byte[] byteURL = stringURL.getBytes(); 
      Blob blob; 
      try { 
       blob.setBytes(1, byteURL); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 


//I will pass the data from blob here, this is just placeholder 
      Intent sendIntent = new Intent(); 
      sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      sendIntent.setAction(Intent.ACTION_SEND); 
      sendIntent.putExtra(Intent.EXTRA_TEXT, "Simple txt"); 
      sendIntent.setType("text/plain"); 
      view.getContext().startActivity(sendIntent); 
     } 


     return super.shouldInterceptRequest(view, request); 
    } 

Répondre

0

Ce que je ne menais cette JavaScript creux URL à l'aide d'un JavaScriptInterface.class. Vous devez d'abord obtenir les données de cet URL via un script, vous pouvez transformer ces données BLOB dans une chaîne Base64, puis envoyer cette chaîne à votre JavaInterface.class et ensuite faire ce que vous voulez avec cette chaîne, dans mon cas je me suis transformé cette chaîne Base64 dans un fichier ".pdf". Jetez un oeil à ma réponse here