簡體   English   中英

截圖崩潰應用

[英]Taking screenshot crashes app

我嘗試創建一個屏幕截圖應用程序,但是以某種方式無法獲取根目錄內容。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.Canvas;
import android.os.Environment;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.view.View.MeasureSpec;

public class Screenshot extends Activity {

    public final String TAG = "Screen";


    String output; 
    public String takeScreen(String savepathname) {

        Log.e(TAG, "TAKESCREEN 01");

        //View content = findViewById(R.id.button1);
        //View content = findViewById(R.id.layoutroot);

        //View content = getWindow().getDecorView().findViewById(android.R.id.content);
        Log.e(TAG, "TAKESCREEN 01.5");
        content.setDrawingCacheEnabled(true);

        Log.e(TAG, "TAKESCREEN 02");

        //View content = findViewById(R.id.layoutroot);
        Bitmap bitmap = content.getDrawingCache();
        File file = new File( Environment.getExternalStorageDirectory() + savepathname);

        Log.e(TAG, "TAKESCREEN 03");

        try{
            Log.e(TAG, "TAKESCREEN 04");

            file.createNewFile();
            Log.e(TAG, "TAKESCREEN 05");
            FileOutputStream ostream = new FileOutputStream(file);
            Log.e(TAG, "TAKESCREEN 06");
            bitmap.compress(CompressFormat.PNG, 100, ostream);
            Log.e(TAG, "TAKESCREEN 07");
            ostream.close();
            output = "Successfully saved -> "+savepathname;
        }catch (Exception e) {
            e.printStackTrace();
            output = "Screenshot.java -> "+e;
        }

        return output;
    }
}

如果我使用findViewbyId,則只會收到以下錯誤:“ layoutroot無法解析或不是字段”。

使用“ getWindow()。getDecorView()。findViewById(android.R.id.content);”時 可以,但是應用程序在那部分崩潰了。

有人可以幫我嗎?

您也實現了這部分嗎? 如果沒有,請將其放在Screen類中。 順便說一句,我堅信閱讀本活動生命周期教程將對您有所幫助。

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

假設在activity_main.xml中正確描述了button1layoutroot

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM