создать намерение из потока - PullRequest
1 голос
/ 19 ноября 2011

Мне нужно создать намерение из потока:

final Runnable installapps = new Runnable() {
    public void run() {
        String[] fnames = appsPath.list();
        for (String curfile : fnames) {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(Uri.fromFile(new File(path)),
                    "application/vnd.android.package-archive");
            startActivity(intent);
        }
    }
};

Я пытался использовать runOnUiThread, но это все еще не может быть сделано (приложение упало).

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 ноября 2011

Сделано это с помощью обработчика и StartActivityForResult (). Он запускает установку Intent, ждет любого результата (только закрытие намерения) и выполняет следующий.

handler.sendEmptyMessage(0);

private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        appcounter++;
        if (appcounter < fnames.length) { 
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(new File(appsPath + "/" + fnames[appcounter])), "application/vnd.android.package-archive");
        startActivityForResult(intent, req);  
        }
    }
};

@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);
   //  appcounter++; 
    handler.sendEmptyMessage(0);


  }
0 голосов
/ 19 ноября 2011

Вам нужно запустить новый Intent из класса Activity. Затем просто вызовите:

Intent intent = new Intent(this);
...