从DocumentDirectoryPath将本地共享图像反映到Instagram

时间:2016-04-23 19:35:41

标签: android react-native instagram

我为React Native制作了自定义原生模块,需要从路径/data/user/0/com.instagramscheduler/files/downloaded.jpg(这是我的应用程序)共享图像,并且要清楚文件存在于该文件夹中

但问题是它不共享,当我分享到Instagram时,它表示它无法加载文件。我已经检查了uri.toString() == "file:///data/user/0/com.instagramscheduler/files/downloaded.jpg"

我的React Native自定义共享方法:

public void share() {
    // Create the new Intent using the 'Send' action.
    Intent share = new Intent(Intent.ACTION_SEND);

    // Set the MIME type
    share.setType("image/jpeg");
    share.setPackage("com.instagram.android");

    // Create the URI from the media
    File media = new File("/data/user/0/com.instagramscheduler/files/downloaded.jpg");
    Uri uri = Uri.fromFile(media);

    // Add the URI to the Intent.
    share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    share.putExtra(Intent.EXTRA_STREAM, uri);

    // Broadcast the Intent.
    activity.startActivity(Intent.createChooser(share, "Share To"));
}

如果有帮助,这是清单

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.instagramscheduler">

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

<application
  android:allowBackup="true"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:theme="@style/AppTheme">
  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
  <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>

如果需要,这是 logcat (从分享对话框打开到无法在Instagram上分享时开始):https://gist.github.com/Azael05x/f706925668ce9b8dd9970a81ed23e979

1 个答案:

答案 0 :(得分:1)

  1. 当我下载并保存图像而不是将图像保存到应用程序文件夹时,请将其保存到public folder。它有效,因为Instagram无法访问我的应用程序私人文件夹。
  2. 然后我检查了其他手机,它在那里没有用。原因是Instagram被禁用存储许可。