我正在开发一款应用程序,可以让用户通过电子邮件发送照片,而无需打开电子邮件应用程序(用户只需点击分享按钮,app就会自动发送带有照片附件的电子邮件。
要实现这一点,我想通过...菜单在图库共享中选择我的应用后直接启动服务。
我现在正在做的是创建一个透明的活动,它工作正常,但它阻止用户浏览图库,直到发送电子邮件
那么我怎么能解决这个问题呢?我想我可以创建透明的活动来启动服务,但它真的是实现我想要的最佳方式吗?
编辑(部分代码):使用图库共享意图时显示透明的发送活动
<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发送电子邮件(因为没有它,在几秒钟内发送几张照片应用程序会暂时冻结)。
希望这可以帮助你们中的一些人!
答案 0 :(得分:0)
您可以使用onActivityResult
并检查RESULT_OK
是否如此,然后继续您要执行的流程。
- 执行完您的流程后,在完成后将其添加到该流程中,这将打开用户主屏幕并保持设备正常运行。
moveTaskToBack(true);