2013-01-09 70 views
0

我的Android應用程序有幾個問題。我想分享一些文字和圖片給fb和twitter。第一個問題是,我無法將我的文本框中的文本複製到fb消息中......我的意思是我有一個文本字段,其中包含您想要共享的文本和2個按鈕(fb,twitter)以及twitter端正在工作很好,但我不能將文本附加到fb消息(窗口出現在按鈕的按鈕上,但它是空白的)。這裏是我的分享關於facebbok代碼:android共享應用程序

Intent shareIntent = new Intent(
        android.content.Intent.ACTION_SEND); 
      shareIntent.setType("text/plain"); 
      shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
        txt.getText()); 
      shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
        txt.getText()); 
      PackageManager pm = v.getContext().getPackageManager(); 
      List<ResolveInfo> activityList = pm.queryIntentActivities(
        shareIntent, 0); 
      for (final ResolveInfo app : activityList) { 
       if ((app.activityInfo.name).contains("facebook")) { 
        final ActivityInfo activity = app.activityInfo; 
        final ComponentName name = new ComponentName(
          activity.applicationInfo.packageName, 
          activity.name); 
        shareIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
        shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK 
          | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
        shareIntent.setComponent(name); 
        v.getContext().startActivity(shareIntent); 
        break; 
       } 
      } 

我的另一個問題是,我的照片瀏覽器是給我這樣的文件的路徑:「外部/圖像/媒體/攝」我雖然這個問題是我必須複製擴展名(.jpg等),但那不是。如果我使用直接路徑:「/mnt/sdcard/DCIM/01.jpg」,它工作正常。有人可以幫助我如何找到照片的直接路徑或如何修改我的代碼,它的工作原理與第一種:

private void share(String nameApp, String imagePath, String text) { 
    try { 
     List<Intent> targetedShareIntents = new ArrayList<Intent>(); 
     Intent share = new Intent(android.content.Intent.ACTION_SEND); 
     share.setType("image/jpeg"); 
     List<ResolveInfo> resInfo = getPackageManager() 
       .queryIntentActivities(share, 0); 
     if (!resInfo.isEmpty()) { 
      for (ResolveInfo info : resInfo) { 
       Intent targetedShare = new Intent(
         android.content.Intent.ACTION_SEND); 
       targetedShare.setType("image/jpeg"); 
       if (info.activityInfo.packageName.toLowerCase().contains(
         nameApp) 
         || info.activityInfo.name.toLowerCase().contains(
           nameApp)) { 
        targetedShare.putExtra(Intent.EXTRA_SUBJECT, text); 
        targetedShare.putExtra(Intent.EXTRA_TEXT, text); 
        targetedShare.putExtra(Intent.EXTRA_STREAM, 
          Uri.fromFile(new File(imagePath))); 
        targetedShare.setPackage(info.activityInfo.packageName); 
        targetedShareIntents.add(targetedShare); 
       } 
      } 
      Intent chooserIntent = Intent.createChooser(
        targetedShareIntents.remove(0), "Select app to share"); 
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, 
        targetedShareIntents.toArray(new Parcelable[] {})); 
      startActivity(chooserIntent); 
     } 
    } catch (Exception e) { 
    } 
} 

THX預期...

+0

我相信在這一刻,Facebook並不支持'android.content.Intent.ACTION_SEND'。因爲他們希望你使用他們的SDK,同樣應該與twitter,奇怪的是你讓它工作) – Daler

+0

也許你會賴特,但Twitter部分工作正常或無照片...有人告訴我,我不能分享FB照片和文字在同一時間只與Facebook的SDK,所以我想讓他們分開...照片部分工作正常與FOB太,但我不能的文字部分不... – spd92

+0

我也想通過將facebook共享集成到我的應用程序中,當我看到他們想使用他們的sdk時,我就通過了它。某處也是從facebook官方回答,他們不會把它放在他們的應用程序,所以... – Daler

回答

0

你可以得到的確切路徑您的圖片如下,我已經在FB & Twitter上分享了照片&的文字,這是您分享的方式,也適合我。希望這會幫助你。

編輯:

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK) { 
     if (requestCode == SELECT_PICTURE) { 
      Uri selectedImageUri = data.getData(); 
      selectedImagePath = getPath(selectedImageUri); 
     } 
    } 
} 
public String getPath(Uri uri) { 
    String[] projection = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    int column_index = cursor 
      .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 
+0

我必須從我的手機瀏覽照片不像01.jpg一樣的確切照片...我怎麼能用它來獲得確切的文件路徑? – spd92

+0

然後,您可以打開設備中的圖庫並獲取所選圖庫的路徑。 (int requestCode,int resultCode,Intent data){ – GrIsHu

+0

} public void onActivityResult(int requestCode,int resultCode,Intent data){ \t super.onActivityResult(requestCode,resultCode,data); \t if(requestCode == SELECT_IMAGE) \t if(resultCode == Activity.RESULT_OK){ \t Uri selectedImage = data.getData(); \t path = selectedImage.getPath(); \t txt.setText(path); \t} \t}' – spd92