2016-04-06 2 views
-1

Ich versuche, den Screenshot des Bildschirms mit einer expliziten Absicht zu übergeben, aber der Bildschirm zeigt einen schwarzen Screenshot (siehe Bild here). Sobald ich auf Teilen klicke, erscheint ein Toast, der besagt, dass das Senden fehlgeschlagen ist. Hier ist der Code-Screenshot zu erfassen und an andere App senden:Das Bild wird nicht angezeigt, wenn es als Vorsatz übergeben wurde

public void getScreenShot(View view) { 
     View screenView = view.getRootView(); 
     screenView.setDrawingCacheEnabled(true); 
     Bitmap bitmap = Bitmap.createBitmap(screenView.getDrawingCache()); 
     screenView.setDrawingCacheEnabled(false); 
     f = new File(this.getFilesDir(), "screenshotFile"); 
     try { 
      if (!f.exists()) 
       f.createNewFile(); 
     } catch (IOexception e) { 
      e.printStackTrace(); 
     } 
     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 10, bos); 
     byte[] bitmapdata = bos.toByteArray(); 

     FileOutputStream fos = null; 
     try { 
      fos = new FileOutputStream(f); 
      fos.write(bitmapdata); 
      fos.flush(); 
      fos.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

Dieser Code sendet die Daten WhatsApp:

public void shareWhatsapp(View view) { 
    try { 
     myVib.vibrate(50); 
     getScreenShot(view); 

     //String fileName = "screenshotFile"; 
     //Bitmap bitmap = BitmapFactory.decodeFile(f.getAbsolutePath()); 

     Intent intent = new Intent(Intent.ACTION_SEND); 
     intent.setType("image/*"); 
     try { 
      intent.setPackage("com.whatsapp"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      Toast.makeText(MainActivity.this, "App not installed", Toast.LENGTH_SHORT).show(); 
     } 
     //TODO: APP CAN CRASH HERE 
     if (position > 0) { 
      try { 
       intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } finally { 
       intent.putExtra(Intent.EXTRA_TEXT, Titles.get(position - 1) + ": " + Links.get(position - 1));  //position problems 
      } 
     } else { 
      try { 
       intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } finally { 
       intent.putExtra(Intent.EXTRA_TEXT, Titles.get(0) + ": " + Links.get(0));  //position problems 
      } 
     } 
     startActivity(intent); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

jemand mir dabei helfen?

+0

In welcher Version von Android testen Sie dies? –

+0

Android 6.0 MarshMallow – GurpreetSK95

+0

Vielleicht kann der Downvoter helfen, da er vielleicht zu viel Freizeit hat, um nicht das ganze Problem zu lesen. – GurpreetSK95

Antwort

0

Zuerst schreiben Sie die Datei unter internal storage. Apps von Drittanbietern haben keinen Zugriff auf den internen Speicher Ihrer App.

Zweitens verwenden Sie Uri.fromFile(), die starting to be discontinued ist.

Ihre sicherste langfristige Vorgehensweise ist zu have a ContentProvider serve your file from its location on internal storage, dann ein Uri mit diesen ContentProvider zuzugeordnet verwenden.

+0

Versucht, Speichern auf externen Speicher, aber immer noch das Speicherproblem. Kann nicht auf die Datei zugreifen. Alle Berechtigungen in Manifest erwähnt. java.io.filenotfundexception öffnen fehlgeschlagene eacces (Berechtigung verweigert) – GurpreetSK95