9

ルート化されていない電話の画面をキャプチャするのに問題があります。

コンピューターでコマンドを試しました:

adb shell /system/bin/screencap -p /sdcard/out.png

これはうまくいきました。

ただし、次のようにアプリケーションでこのコマンドを使用しようとするたびに:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

            String[] str ={"/system/bin/screencap","-p","/sdcard/out.png"};

            try {  
                Process ps = Runtime.getRuntime().exec(str); 
                try { 
                    ps.waitFor(); 
                } catch (InterruptedException e) { 
                    e.printStackTrace(); 
                }  
            } catch (IOException e) { 
                Toast.makeText(this, ""+e, Toast.LENGTH_LONG).show(); }


}

私は常に out.png の 0 バイトを取得します。ソースコードにエラーはないと思いますが、なぜこのようなエラーが発生するのか理解できません。

この問題で私を助けてください。

ありがとう。

4

1 に答える 1

7

そのようなものをlogcatで検索してください

権限の失敗: android.permission.READ_FRAME_BUFFER from uid=10113 pid=2934 113 PermissionCache D android.permission.READ_FRAME_BUFFER for uid=10113 をチェック => 拒否 (294 us) 113 SurfaceFlinger E 権限拒否: フレームバッファ pid=2934 を読み取れません。 uid=10113

そのエラーが発生した場合、それは許可の問題を意味します。

READ_FRAME_BUFFER 権限を追加しても、まだ機能しません。一般に、アプリケーションにはフレームバッファを読み取る権限がなく、システム証明書を使用してコンパイルするか、su を使用して root 権限を取得する必要があることを意味します。

于 2012-11-04T23:05:50.557 に答える