【发布时间】:2014-05-08 05:54:17
【问题描述】:
我正在开发一个应用程序,它可以让用户通过电子邮件发送照片,而无需打开电子邮件应用程序(用户只需点击分享按钮,应用程序就会自动发送带有照片附件的电子邮件。
为了实现这一点,我想在通过...菜单在图库共享上选择我的应用后直接启动服务。
我现在正在做的是创建一个透明的活动,它工作得很好,但它会阻止用户在发送电子邮件之前浏览画廊
那么我该如何解决这个问题呢?我想我可以创建透明的活动来启动服务,但这真的是实现我想要的最佳方式吗?
编辑(部分代码):
使用图库共享意图时打开透明发送活动的清单
<activity
android:name="com.VN.PicSharer.sendActivity"
android:theme="@style/Theme.Transparent"
android:label="string/app_name" >
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
显示的代码用于从图库中获取数据
public class sendActivity extends Activity {
Context con;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
Intent intent = getIntent();
String action = intent.getAction();
File file;
Bundle extras = intent.getExtras();
con = getApplicationContext();
if (Intent.ACTION_SEND.equals(action)) {
if (extras.containsKey(Intent.EXTRA_STREAM)) {
try {
//code for sending email with attachment
EDIT2:已解决。 将我的 startActivity 类更改为像服务激活器一样,并在其意图中放置需要附加图片的数据:
intent = new Intent(this, SendService.class);
Intent mIntent = getIntent();
Bundle extras = mIntent.getExtras();
String action = mIntent.getAction();
intent.putExtra("bundle", extras);
intent.putExtra("string", action);
startService(intent);
onBackPressed();
在我的服务中,我使用 AsyncTask 发送电子邮件(因为没有它,在几秒钟内发送几张照片时,应用程序会在一段时间内冻结)。
希望这可以帮助你们中的一些人!
【问题讨论】:
-
我添加了一些代码。我现在将尝试用服务替换此活动,并创建其他活动来调用我的服务。
标签: android android-intent gallery share