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");

誰もがそれを行う方法を知っていますか?スクリーンショットをキャプチャして、必要に応じてユーザーに共有させたいと思います。他のすべては機能します、それは私が得ることができないスクリーンショットだけです。

4

1 に答える 1

0

スクリーンショットを取得できる唯一の方法は、カーネルレベルのフレームバッファに直接アクセスすることです。これを実現し、そこからデータを取得してグラフィックを構成するには、ルートアクセスが必要です。スクリーン自体。

これには、この目的のために改造されたROMが必要であるか、そうするためにroot権限を持っている必要があります。ソニー、私は知っています、それをします、彼らはROMが変更されるときにルートなしでそうするためのその機能を持っています、電源メニューに、オプション「スクリーンショットを撮る」があります。CMはルートを必要とするもう1つです。

これを行うために利用可能なプログラムAPIを備えたICSで利用可能な機能があります。この回答を参照してください。ただし、以前のバージョンでは、運が悪かったです。

于 2012-07-02T15:20:52.657 に答える