1

我有一些文件要通过Bluetooth. 这是我的代码

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ArrayList<Uri> uris = new ArrayList<Uri>();
        String multifile[] = {"/sdcard/file1.txt", "/sdcard/file2.txt", "/sdcard/file3.txt"};
        int len = multifile.length;
        Intent Int = new Intent();

        Int.setAction(android.content.Intent.ACTION_SEND_MULTIPLE);
        Int.setType("*/*");

        String packageName = null;
        String className = null;
        boolean found = false;
        PackageManager pm = getPackageManager();
        List appsList = pm.queryIntentActivities( Int, 0);

        ArrayList<ResolveInfo> list = (ArrayList<ResolveInfo>) pm.queryIntentActivities(Int, PackageManager.PERMISSION_GRANTED);
        for(ResolveInfo info: list) {
            packageName = info.activityInfo.packageName;

            if( packageName.equals("com.android.bluetooth")) {
                className = info.activityInfo.name;
                found = true;
                break;// found
            }
        }

        if (!found) {
            Toast.makeText(MainActivity.this, "not foud bluetooth",
                    Toast.LENGTH_SHORT).show();
            // exit
        }

        Int.setClassName(packageName, className);

        for(int i=0;i<len;i++) {
            File file=new File(multifile[i]);
            uris.add(Uri.fromFile(file));
        }

        Int.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
        startActivity(Int);
        onStop(); //stop here till all file have been sent 
        //delete all files which is to be send    
    }
}

所有三个文件都已发送,但问题是在完成Mainactivity之前执行 continue,Intent Int因为在发送文件之前所有文件都已删除 请帮助如何停止执行,Mainactivity直到 Int 发送所有文件

4

3 回答 3

1

如果您的“主要活动”正在启动孩子,让它使用它启动它startActivityForResult()并且让它不采取进一步的行动(不删除文件),直到孩子结果可用并表明它没有错误地完成。

如果没有这种父子关系,有几种选择,但一种简单的方法是让较低级别的活动广播较高级别的活动收到的消息,并且只有在收到后才进行后续工作。

于 2013-07-08T10:55:10.713 回答
0

从您的MainActivity电话中ChildActivity使用startActivityForResult(). 所以主活动将等到子活动完成它的过程。当子活动完成时setResult(),用于指示 MainActivity 该过程已完成。

接收结果,onActivityResult()然后从MainActivity.

于 2013-07-08T11:00:12.613 回答
0

您可以使用 startActivityForResult。父活动将等待来自被调用活动的回调。

例如

Intent i = new Intent(this,CalledActivity.class);
startActivityForResult(i, requestCode);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("CheckStartActivity","onActivityResult and resultCode = "+resultCode);
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==1){
    Toast.makeText(this, "Pass", Toast.LENGTH_LONG).show();
}
else{
    Toast.makeText(this, "Fail", Toast.LENGTH_LONG).show();
}
于 2013-07-08T10:56:39.130 回答