【问题标题】:android sharing application安卓分享应用
【发布时间】:2013-01-09 12:38:50
【问题描述】:

我的 Android 应用有一些问题。我想分享一些文字和照片到 fb 和 twitter。第一个问题是我无法将文本从我的文本字段复制到 fb 消息...我的意思是我有一个文本字段,其中包含您要共享的文本和 2 个按钮(fb、twitter),而 twitter 端正在工作很好,但我无法将文本附加到 fb 消息(按下按钮时窗口出现,但它是空白的)。这是我在facebook上分享的代码:

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;
                }
            }

我的另一个问题是我的照片浏览器给了我这样的文件路径:“external/images/media/photo”,尽管问题是我也必须复制扩展名(.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) {
    }
}

谢谢预期...

【问题讨论】:

  • 我相信此时 facebook 不支持android.content.Intent.ACTION_SEND。因为他们希望你使用他们的 sdk,twitter 也应该如此,奇怪的是你让它工作)
  • 也许是你的赖特,但无论有没有照片,推特部分都可以正常工作......有人告诉我,我不能只用 facebook sdk 同时分享 fb 照片和文字,所以我想让它们分开......照片部分也可以与fb一起正常工作,但我不能文本部分不......
  • 我也想将 facebook share 集成到我的应用程序中,当我看到他们想使用他们的 sdk 时,我就通过了。某个地方也有来自 facebook 的官方回答,他们不会把它放在他们的应用程序中,所以......
  • 您好,这是 facebook 中的已知错误。我们无法将字符串传递给状态字段。因为您可能必须创建自己的弹出窗口(警报)才能共享它。
  • 好的,谢谢...有照片浏览问题有人可以帮助我吗?

标签: android facebook photo sharing


【解决方案1】:

您可以获取图片的确切路径,如下所示,我已经按照您分享的方式在 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);
}

【讨论】:

  • 我必须从我的手机中浏览一张照片,而不是像 01.jpg 这样的确切照片...我如何使用它来获取确切的文件路径?
  • 然后就可以从设备上打开相册,获取相册中选中照片的路径。
  • public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == SELECT_IMAGE) if (resultCode == Activity.RESULT_OK) { Uri selectedImage = data.getData(); path = selectedImage.getPath(); txt.setText(path); } }
  • 这就是我所说的:startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);
  • 您应该使用已实现的代码获取路径。您到底面临什么问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 2016-12-10
相关资源
最近更新 更多