2012-07-02 130 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

正确的排序,但与此代码尝试执行的操作无关。相反,这段代码试图将应用程序自己的视图层次结构写成位图(即“截图”本身)。如果做得对,这是可能的。 –