0

これは、Android アプリから写真を撮り、Facebook の壁にアップロードするための私のコードです。

photo_up=(Button)findViewById(R.id.camera_foto_button);
photo_up.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);              
        startActivityForResult(cameraIntent, CAMERA_REQUEST); 
    }
  });


switch(requestCode){
        case CAMERA_REQUEST:{
          Bitmap bmp = (Bitmap) data.getExtras().get("data");
          ByteArrayOutputStream stream = new ByteArrayOutputStream();        
          bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);         
          byteArray = stream.toByteArray(); // convert camera photo to byte array  
          Bundle params = new Bundle();       
          params.putByteArray("picture", byteArray);      
          params.putString("message", "Have fun");       
          Utility.mAsyncRunner.request("me/photos", params,"POST", new PhotoUploadListener(), null);
        break;

写真が撮られると、2秒後に強制的に閉じられます。これはログです:

05-17 18:04:47.756: E/AndroidRuntime(272): Uncaught handler: thread Thread-8 exiting due to uncaught exception
05-17 18:04:47.756: E/AndroidRuntime(272): java.lang.NullPointerException
05-17 18:04:47.756: E/AndroidRuntime(272):  at com.myco.android.myapp.Gallery1$PhotoUploadListener.onComplete(Gallery1.java:368)
05-17 18:04:47.756: E/AndroidRuntime(272):  at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:254)
E/dalvikvm(272): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

しかもSDカードに画像が保存されないのも欲しい。必要なすべての権限がマニフェストに追加されました。

4

1 に答える 1

0

このコードを試してみてください、それは私のために働きます

private void uploadImage() {

        if (facebook.isSessionValid()) {

            byte[] data = null;

            Bitmap bi = BitmapFactory.decodeFile(final_image_bitmap);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            data = baos.toByteArray();

            Bundle params = new Bundle();
            params.putString("method", "photos.upload");
            params.putByteArray("picture", data);

            AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
            mAsyncRunner.request(null, params, "POST",
                    new SampleUploadListener(), null);

        } else {
            Log.v("Session is not valid.", "");
        }
于 2012-05-17T18:29:15.867 に答える