2016-04-06 8 views
-1

Ekranın ekran görüntüsünü açık bir amaç ile geçmeye çalışıyorum ancak ekran siyah ekran görüntüsünü gösterir (bkz. Resim here). Paylaşımı tıkladığımda, gönderim başarısız olduğunu belirten bir tost belirir.Ekstra bir amaç olarak geçtiğinde resim gösterilmiyor

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(); 
    } 
} 

birisi bana bu konuda yardımcı olabilir:

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(); 
     } 
    } 

Bu kod Whatsapp veri gönderir: İşte kod ekran görüntüsü almak ve diğer app göndermek için var?

+0

Hangi sürümü Android üzerinde test ediyorsunuz? –

+0

Android 6.0 MarshMallow – GurpreetSK95

+0

Belki de downvoter, tüm sorunu okumak için çok fazla boş zaman geçirebileceği için yardımcı olabilir. – GurpreetSK95

cevap

0

İlk olarak dosyayı internal storage'a yazıyorsunuz. Üçüncü taraf uygulamaların uygulamanızın dahili depolama alanına erişimi yoktur.

İkinci olarak, starting to be discontinued olan Uri.fromFile() kullanıyorsunuz.

En güvenli ve uzun vadeli işlemleriniz have a ContentProvider serve your file from its location on internal storage numaralı telefona aittir, daha sonra bu ContentProvider ile ilişkili bir Uri kullanın.

+0

Harici depolama birimine kaydetmeyi ancak yine de kaydetme sorununu denedim. Dosyaya eriş. Bildirimde belirtilen tüm izinler. java.io.filenotfoundexception açık başarısız eacces (izin reddedildi) – GurpreetSK95