簡體   English   中英

在Facebook牆上張貼圖片

[英]Post image on facebook wall

自從早上以來,我一直在尋找在Facebook牆上張貼圖片的信息,並用Google搜索它,因此獲得了很多有關張貼圖片的信息。 我可以發布鏈接而沒有任何錯誤,但是一旦我嘗試獲取NullPointer異常的圖像

在我的按鈕單擊事件偵聽器后,我將調用此方法。 如果我取消注釋鏈接參數,那么它將顯示一個對話框,要求共享和取消;如果我輸入params.putByteArray("picture", data); 此代碼我將得到以下logcat錯誤

09-15 15:51:50.647: E/AndroidRuntime(9716): FATAL EXCEPTION: main
09-15 15:51:50.647: E/AndroidRuntime(9716): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.m2fpremiun.dressup/com.m2fpremiun.dressup.FBProjectActivity}: java.lang.NullPointerException
09-15 15:51:50.647: E/AndroidRuntime(9716):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2189)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2216)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at android.app.ActivityThread.access$600(ActivityThread.java:149)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at android.os.Looper.loop(Looper.java:153)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at android.app.ActivityThread.main(ActivityThread.java:5000)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at java.lang.reflect.Method.invokeNative(Native Method)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at java.lang.reflect.Method.invoke(Method.java:511)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at dalvik.system.NativeStart.main(Native Method)
09-15 15:51:50.647: E/AndroidRuntime(9716): Caused by: java.lang.NullPointerException
09-15 15:51:50.647: E/AndroidRuntime(9716):     at libcore.net.UriCodec.encode(UriCodec.java:132)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at java.net.URLEncoder.encode(URLEncoder.java:50)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at com.facebook.android.Util.encodeUrl(Util.java:85)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at com.facebook.android.Facebook.dialog(Facebook.java:774)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at com.m2fpremiun.dressup.FBProjectActivity.postToWall(FBProjectActivity.java:436)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at com.m2fpremiun.dressup.FBProjectActivity.loginToFacebook(FBProjectActivity.java:288)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at com.m2fpremiun.dressup.FBProjectActivity.onCreate(FBProjectActivity.java:83)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at android.app.Activity.performCreate(Activity.java:5020)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
09-15 15:51:50.647: E/AndroidRuntime(9716):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2153)
09-15 15:51:50.647: E/AndroidRuntime(9716):     ... 11 more

請有人幫我解決這個問題。

public void postToWall() {
    // post on user's wall.
    byte[] data = null;
     Bundle params = new Bundle();   
      //postParams.putString("description","I'm playing JackPac and Scored "+hScore+" ! Can you beat my High Score?");

     // postParams.putString("link", "https://play.google.com/store/apps/details?id=com.mobi2fun.jackpac&hl=en");


      Bitmap bi = BitmapFactory.decodeFile("/storage/sdcard0/Game/test.png");

        ByteArrayOutputStream baos = new ByteArrayOutputStream();              
        bi.compress(Bitmap.CompressFormat.PNG, 100, baos);              
        data = baos.toByteArray();                

        params.putString("caption", "Image Post");
        //params.putString("description","I'm playing XYZ Game and Scored "+hScore+" ! Can you beat my High Score?");
        //params.putString("link", "https://play.google.com/store/apps/details?id=xyz.package&hl=en");

        params.putString("method", "photos.upload"); 
        params.putByteArray("picture", data);
        facebook.dialog(this, "feed",params, new DialogListener() {

        @Override
        public void onFacebookError(FacebookError e) {
        }

        @Override
        public void onError(DialogError e) {
        }

        @Override
        public void onComplete(Bundle values) {
            logoutFromFacebook();
            try {
                //facebook.logout(getApplicationContext());
                //facebook.setAccessExpires(0);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 

        }

        @Override
        public void onCancel() {
            logoutFromFacebook();
            try {
            //  facebook.logout(getApplicationContext());
                mAsyncRunner.logout(getApplicationContext(),new RequestListener() {

                    @Override
                    public void onMalformedURLException(MalformedURLException e, Object state) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onIOException(IOException e, Object state) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onFileNotFoundException(FileNotFoundException e, Object state) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onFacebookError(FacebookError e, Object         state) {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onComplete(String response, Object state) {
                        // TODO Auto-generated method stub

                    }
                });
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
        }


    });

}

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

我在清單文件中給出的這些權限

我已經檢查了此鏈接,並嘗試了所有codeBUT,但沒有運氣Facebook牆上的文字和圖像帖子都已從SDCard上傳到FaceBook。

我使用此代碼在Facebook牆上共享文本和圖像。 其作品。 這可能對您有所幫助。

如下面的代碼所示,從oncreate方法中調用facebooksharing方法。 您可以從任何地方調用它。

 CallbackManager callbackManager; private LoginManager manager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FacebookSdk.sdkInitialize(this.getApplicationContext()); setContentView(R.layout.Your_layout); callbackManager = CallbackManager.Factory.create(); //call method for sharing post FaceBookSharing(); } public void FaceBookSharing() { List<String> permissionNeeds = Arrays.asList("publish_actions"); manager = LoginManager.getInstance(); manager.logInWithPublishPermissions(this, permissionNeeds); manager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { PostImage(); } @Override public void onCancel() { System.out.println("onCancel"); } @Override public void onError(FacebookException exception) { System.out.println("onError"); } }); } private void PostImage() { Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); SharePhoto photo = new SharePhoto.Builder().setBitmap(image) .setCaption("Hey this is Demo post!") .build(); SharePhotoContent content = new SharePhotoContent.Builder().addPhoto( photo).build(); ShareApi.share(content, null); Toast.makeText(this, "Succsesfully posted on your wall", Toast.LENGTH_LONG) .show(); } 

暫無
暫無

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

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