2012-07-02 50 views
0

下面是代碼摘錄。我可以編譯它,但程序在手機/模擬器上崩潰。截取截圖並與社交媒體分享

Bitmap bitmap; 
    View v1 = MyView.getRootView(); 
    v1.setDrawingCacheEnabled(true); 
    bitmap = Bitmap.createBitmap(v1.getDrawingCache()); 
    v1.setDrawingCacheEnabled(false); 

    String path = Images.Media.insertImage(getContentResolver(), bitmap, 
      "title", null); 
    Uri screenshotUri = Uri.parse(path); 

    final Intent socialIntent = new Intent(Intent.ACTION_SEND); 
    socialIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 

    socialIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri); 
    socialIntent.setType("image/png"); 

任何人都知道該怎麼做?我想截圖並讓用戶分享,如果他/她喜歡。其他的工作,這只是我無法得到的截圖。

+1

發佈錯誤日誌... –

回答

0

可以獲得屏幕截圖的唯一方法是直接訪問位於內核級別的幀緩衝區,這反過來需要有根訪問才能完成此操作,並從中提取數據以構成圖形就是屏幕本身。

這需要修改ROM​​用於此目的或具有root權限才能這樣做。索尼,我知道,這樣做,他們有這樣的設施,沒有根,因爲ROM被修改,在電源菜單中,有一個選項「採取屏幕截圖」。 CM是需要root的另一個。

ICS中有一個工具可以使用編程API執行此操作,請參閱此answer,但對於早期版本,您運氣不好。

+0

正確的排序,但與此代碼嘗試執行的操作無關。相反,這段代碼試圖將應用程序自己的視圖層次結構寫成位圖(即「截圖」本身)。如果做得對,這是可能的。 –