我想让我的应用程序像Instagram一样可以分享图片 直接从我的应用程序,如果我从中选择任何图像 画廊和点击共享我的应用程序显示在选择器列表
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<activity
android:name=".ui.activities.SplashActivity"
android:label="@string/app_name"
android:launchMode="singleTop"
android:screenOrientation="sensorPortrait"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="*/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
从意图接收数据的代码是
private void initActivityState() {
if (getIntent() != null){
runShareActivityIntent();
}
}
public void runShareActivityIntent(){
Intent passIntent=getIntent();
String action = passIntent.getAction();
String type = passIntent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
Uri imageUri = (Uri) passIntent.getParcelableExtra(Intent.EXTRA_STREAM);
Intent intentcall = new Intent(this, MainActivity.class);
intentcall.putExtra(KEY_TYPE,type);
intentcall.putExtra(KEY_VALUE,imageUri.toString());
startActivity(intentcall);
finish();
}
}
现在,在我的情况下,当我的应用程序处于后台时,我能够获得
String type = passIntent.getType();
我可以获得图像uri但是当我的应用程序没有运行时(杀死应用程序)和我 从选择器中选择我的应用程序我将类型设为null
答案 0 :(得分:2)
这对我有用:
JBOSS
答案 1 :(得分:0)
尝试为清单文件添加权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
答案 2 :(得分:0)
你必须在Manifeast.xml中更改
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="audio/*" />
</intent-filter>
在您的Main活动中,您必须收到oncreate()方法的意图。
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
if (type.startsWith("image/")) {
handleSendImage(intent); // Handle single image being sent
}
else if (type.startsWith("audio/")) {
handleSendAudio(intent); // Handle single audio being sent
}
}
现在每当您使用send调用应用程序时。您可以看到应用的图标。当您获得意图时,您可以根据需要进行更改。
我希望这对你有所帮助。