Используйте этот параметр
Facebook - "com.facebook.katana"
Twitter - "com.twitter.android"
Instagram - "com.instagram.android"
Pinterest - "com.pinterest"
SharingToSocialMedia("com.facebook.katana")
public void SharingToSocialMedia(String application) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, bmpUri);
boolean installed = checkAppInstall(application);
if (installed) {
intent.setPackage(application);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(),
"Installed application first", Toast.LENGTH_LONG).show();
}
}
private boolean checkAppInstall(String uri) {
PackageManager pm = getPackageManager();
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
return true;
} catch (PackageManager.NameNotFoundException e) {
}
return false;
}
Если по какой-либо причине необходимо инициировать события Eloquent, и вы хотите оптимизировать проблему n + 1, я бы предложил использовать транзакцию. Это все равно выдаст n
запросов, но база данных может оптимизировать это посредством массовой вставки (из-за транзакции). Он обладает дополнительным преимуществом согласованности данных (либо все вставки выполняются успешно, либо ни одна из них не выполняется).
$result = getResult();
\DB::transaction(function() use ($result) {
foreach($result as $item) {
FieldRuleResult::create($item);
}
});
Если вас не волнует запуск событий Eloquent, и вы просто хотите «массово вставить», вы можете использовать метод insert
, как упомянул Фабиан. Тем не менее, я бы посоветовал использовать транзакцию базы данных для согласованности данных.
$result = getResult();
\DB::transaction(function() use ($result) {
FieldRuleResult::insert($result);
});
В этом последнем случае, если количество записей, которые вы собираетесь вставить, может быть «большим», вы также можете разделить эти вставки на части. (например, 100 за раз, а не все сразу)