我正在使用Intent
向社交应用程序使用共享功能。
我在Instagram上分享图片时遇到问题。
有时我收到消息
无法加载图片。
这是我的代码:
String path="content://media/external/images/media/32872";
Intent shareIntent = new Intent();
shareIntent.setType("image/jpeg");
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(path));
shareIntent.setPackage("com.instagram.android");
startActivity(shareIntent);
如何摆脱这个问题?
答案 0 :(得分:4)
如果你有文件,那么使用下面的代码来分享图片,
private void shareIntagramIntent(String path) {
Intent intent = getActivity().getPackageManager()
.getLaunchIntentForPackage("com.instagram.android");
if (intent != null) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setPackage("com.instagram.android");
try {
shareIntent.putExtra(Intent.EXTRA_STREAM,
Uri.parse("file://" + path));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
shareIntent.setType("image/jpeg");
startActivity(shareIntent);
} else {
// bring user to the market to download the app.
// or let them choose an app?
intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("market://details?id="
+ "com.instagram.android"));
startActivity(intent);
}
}
答案 1 :(得分:0)
试试这个:
File filepath = Environment.getExternalStorageDirectory();
cacheDir = new File(filepath.getAbsolutePath() + "/LikeIT/");
cacheDir.mkdirs();
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + filepath.getAbsolutePath()));
activity.startActivity(intent);
答案 2 :(得分:0)
首先请确保在清单中添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
在res> xml文件夹中将文件创建为“ provider_paths.xml”
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="path_name"
path="." />
</paths>
在清单中创建提供者标签:
<provider
android:name=".utils.FileAccessProvider"
android:authorities="${applicationId}.path_name.file.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
这将允许访问要发布的文件URI。
Intent intent = getPackageManager().getLaunchIntentForPackage("com.instagram.android");
if (intent != null) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setPackage("com.instagram.android");
File logFile = new File(path);
if (logFile.exists()) {
Uri logFileUri = FileAccessProvider.getUriForFile(context,
getApplicationContext().getPackageName() +
".path_name.file.provider", logFile);
// shareIntent.setDataAndType(logFileUri, "image/*");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareIntent.putExtra(Intent.EXTRA_STREAM, logFileUri);
}
shareIntent.setType("image/*");
startActivity(shareIntent);
} else {
// bring user to the market to download the app.
// or let them choose an app?
intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("market://details?id=" + "com.instagram.android"));
startActivity(intent);
}
别忘了添加
Intent.FLAG_GRANT_READ_URI_PERMISSION
没有以上权限,出现此“无法共享”错误。