package kingphil.Intent_test;
import java.io.FileNotFoundException; import java.io.FileOutputStream;
import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Environment; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast;
public class view_test extends Activity{
TextView tv;
private LinearLayout container;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
String a;
container = (LinearLayout)findViewById(R.id.main_container);
container.buildDrawingCache();
Bitmap captureView = container.getDrawingCache();
FileOutputStream fos;
tv = (TextView)findViewById(R.id.tv);
a = getIntent().getStringExtra("input");
for(int i = 0; i < a.length(); i++)
{
tv.setText(String.valueOf(a.charAt(i)));
try
{
fos = new FileOutputStream(Environment.getExternalStorageDirectory().toString()+"/capture" + ".jpeg");
captureView.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (FileNotFoundException e)
{
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "Captured!", Toast.LENGTH_LONG).show();
}
}
}
main java 파일에서 intent하여 불러온 파일입니다.
위와 같이 실행하면 capture.jpeg라는 파일은 생성되지만, 0byte이고 어플은 강제 종료 되어 버립니다.
10-27 11:05:09.083: D/AndroidRuntime(22326): Shutting down VM
10-27 11:05:09.083: W/dalvikvm(22326): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
10-27 11:05:09.091: E/AndroidRuntime(22326): FATAL EXCEPTION: main
10-27 11:05:09.091: E/AndroidRuntime(22326): java.lang.RuntimeException: Unable to start activity ComponentInfo{kingphil.Intent_test/kingphil.Intent_test.view_test}: java.lang.NullPointerException
10-27 11:05:09.091: E/AndroidRuntime(22326): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
10-27 11:05:09.091: E/AndroidRuntime(22326): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
10-27 11:05:09.091: E/AndroidRuntime(22326): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-27 11:05:09.091: E/AndroidRuntime(22326): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
10-27 11:05:09.091: E/AndroidRuntime(22326): at android.os.Handler.dispatchMessage(Handler.java:99)
10-27 11:05:09.091: E/AndroidRuntime(22326): at android.os.Looper.loop(Looper.java:123)
10-27 11:05:09.091: E/AndroidRuntime(22326): at android.app.ActivityThread.main(ActivityThread.java:3687)
10-27 11:05:09.091: E/AndroidRuntime(22326): at java.lang.reflect.Method.invokeNative(Native Method)
10-27 11:05:09.091: E/AndroidRuntime(22326): at java.lang.reflect.Method.invoke(Method.java:507)
10-27 11:05:09.091: E/AndroidRuntime(22326): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
10-27 11:05:09.091: E/AndroidRuntime(22326): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
10-27 11:05:09.091: E/AndroidRuntime(22326): at dalvik.system.NativeStart.main(Native Method)
10-27 11:05:09.091: E/AndroidRuntime(22326): Caused by: java.lang.NullPointerException
10-27 11:05:09.091: E/AndroidRuntime(22326): at kingphil.Intent_test.view_test.onCreate(view_test.java:42)
10-27 11:05:09.091: E/AndroidRuntime(22326): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-27 11:05:09.091: E/AndroidRuntime(22326): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
10-27 11:05:09.091: E/AndroidRuntime(22326): ... 11 more
captureView.compress(Bitmap.CompressFormat.JPEG, 100, fos);
여기서 에러가 난다고 하는데요.
원인을 모르겠습니다.
시원한 답변 부탁드립니다.
넵 퍼미션은 그렇게 줬습니다. 그래서 이젠 SD에 파일 생성까지는 되는데..
다른 에러가 발생했습니다.
게시글을 수정했으니, 다시 한번 답변 부탁드립니다.
아마도 비숫한 경험일 껍니다.
onCreate 에서 비트맵 조작을 하니깐..퍼지더군요.
...
그래서..타이머로..잠시후에..비트맵 조작을 시켰지요..
잘 돼요.
<참고 하세요.>
public class KtestActivity extends Activity {
/** Called when the activity is first created. */
Button btn1;
ImageView imv;
int page=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imv=( ImageView)findViewById(R.id.imageView1);
btn1 = (Button)findViewById(R.id.button1 );
btn1.setOnClickListener(bt1click);
page=0;
this.setTitle("좌우로 기울이면 편합니다.");
Handler mHandler;
mHandler = new Handler();
mHandler.postDelayed(xr, 30);
}
Runnable xr = new Runnable() {
public void run() {
Bitmap mBitmap;
InputStream is;
is = getResources().openRawResource(R.drawable.a1);
mBitmap = BitmapFactory.decodeStream(is);
mBitmap = Bitmap.createScaledBitmap(mBitmap, imv.getWidth(), imv.getHeight(), true);
imv.setImageBitmap(mBitmap);
}
};
}




<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
이렇게 퍼미션 주신거 맞나요? 그냥 이클립스에서 퍼미션으로만 적으면 예외발생하는 게 맞습니다.