FaceBook共有を実装しようとしましたが、ShareDialog.Mode.AUTOMATICを設定するとwebviewでのみ機能し、NATIVEに設定すると何も表示されず、何も表示されませんエラーコールバック。 Facebookアプリがエミュレータにインストールされています。マニフェストでShareDialogはFacebookブックアプリを開けません
プロバイダ:共有のため
<provider android:authorities="com.facebook.app.FacebookContentProvider{myAppId}"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>
コード:私はフラグメントからシェア(..)メソッドを呼んでいる
public void share(String contentUrl,
Activity activity){
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentUrl(Uri.parse(contentUrl))
.build();
ShareDialog dialog = new ShareDialog(activity);
dialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
@Override
public void onSuccess(Sharer.Result result) {
EventBus.getDefault().post(new ShareEvent(true));
}
@Override
public void onCancel() {
Log.e(TAG, "Facebook Share Cancel");
EventBus.getDefault().post(new ShareEvent(false));
}
@Override
public void onError(FacebookException error) {
Log.e(TAG, "Facebook share error: " + error.getMessage());
EventBus.getDefault().post(new ShareEvent(false));
}
})
dialog.show(content, ShareDialog.Mode.NATIVE);
}
。
私はインテントを使用して共有を実装してみました、そしてそれは、それは常に結果を返すので、
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://myUrl.com");
PackageManager pm = activity.getPackageManager();
List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
for (final ResolveInfo app : activityList) {
if ((app.activityInfo.name).contains("facebook")) {
final ActivityInfo mActivity = app.activityInfo;
final ComponentName name = new ComponentName(mActivity.applicationInfo.packageName, mActivity.name);
shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
shareIntent.setComponent(name);
activity.startActivity(shareIntent);
break;
}
}
はしかし私の場合、私は、同じくらい私が知っているように私の最後のソリューションが提供されていません成功した株式のコールバックを、必要とする作品キャンセルされました
あー:
これは私のサンプルコードです。 Intentソリューションのように、コールバックを取得する以外は、アプリケーションを許可せずにコンテンツを共有する方法はありませんか? –
いいえ、主な理由はセキュリティだと思います。私たちは許可を宣言しなければなりません:) – alway5dotcom
申し訳ありません、ありがとう –