使用facebook SDK分享图片时遇到问题。 我创建了一个按钮,用于调用本机Facebook应用程序共享对话框。 但不幸的是,它没有出现。以及DDMS上的错误消息:
“无法找到com.facebook.app.FacebookContentProvider798741073537656的提供商信息”
请帮忙提一下。谢谢!
protected void onCreate(Bundle savedInstanceState) {
FacebookSdk.sdkInitialize(getApplicationContext());
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_share = (Button) findViewById(R.id.btn_share);
shareDialog = new ShareDialog(MainActivity.this);
btn_share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap image = BitmapFactory.decodeFile(path);
SharePhoto photo = new SharePhoto.Builder().setBitmap(image).build();
SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(photo).build();
shareDialog.show(content);
}
});
}
答案 0 :(得分:1)
我有类似的问题,我缺少的是AndroidManifest.xml中的提供者标签。来自Facebook文档(https://developers.facebook.com/docs/sharing/android#photos):
您还需要在AndroidManifest.xml中设置ContentProvider,其中{APP_ID}是您的应用ID:
<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>
答案 1 :(得分:1)
我花了好几个小时试图找出问题所在。在我的例子中,provider标签位于AndroidManifest.xml中的application标签之外。确保您在应用程序中包含提供程序,而不是希望这有助于:)
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
tools:replace="android:theme"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" />
<provider android:authorities="com.facebook.app.FacebookContentProvider1533172037423618"
android:name="com.facebook.FacebookContentProvider"
android:exported="true" />
</application>
答案 2 :(得分:0)
首先请确保您已在AndroidManifest.xml中提及内容提供程序
<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>
1234是你的app id。
其次使用真实设备测试您的应用程序。并确保您已在设备中安装官方Facebook应用程序。
答案 3 :(得分:0)
对我来说,问题是<provider>
必须位于AndroidManifest.xml sdk的<application>
标签内
答案 4 :(得分:0)
我已经在Glide v4上测试了这个。+
Glide.with(this)
.asBitmap()
.load(YOUR_IMAGE_URL).into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
SharePhoto sharePhoto1 = new SharePhoto.Builder()
.setBitmap(resource)
.build();
ShareContent shareContent = new ShareMediaContent.Builder()
.addMedium(sharePhoto1)
.build();
new ShareDialog(getActivity()).show(shareContent, ShareDialog.Mode.AUTOMATIC);
}
});
除非您在Manifest.xml中添加此代码,否则上述代码将无效:
<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>