如何"演员"直接串到Intent?

时间:2014-12-31 04:13:53

标签: android android-intent

我制作了一个活动,从已安装的应用中选择一个应用,并获取所选应用的启动器意图,并将该意图传递回启动活动:

Intent intent = packageManager
                .getLaunchIntentForPackage(app.packageName);

        if (null != intent) {
            Intent data = new Intent();
            data.setData(Uri.parse(intent.toString()));
            setResult(RESULT_OK, data);
            finish();
        }

来自开始活动的onActivityResult:

public void onActivityResult(int requestCode, int resultCode, Intent data){
    if (requestCode == request_Code){
        if (resultCode == RESULT_OK){                   
            intent = data.getData().toString();     
            startActivity(new Intent(intent));
        }

我从Logcat中提取了intent字符串和startActivity中的Intent,我得到了这个:
intent字符串:意图{act = android.intent.action .MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10000000 pkg = com.android.providers.downloads.ui cmp = com.android.providers.downloads.ui / .DownloadsListTab}
startActivity中的Intent Intent {act = Intent {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10000000 pkg = com.android.providers.downloads。 ui cmp = com.android.providers.downloads.ui / .DownloadsListTab}}
(我的应用程序因为错误的意图而崩溃)
正如您所看到的,传递给起始Activity的String是我需要的Intent(在String中) 那么无论如何我可以在不使用Intent的构造函数的情况下使String成为一个意图吗?或者也许是一种将Intent直接传递给起始活动的方法?

2 个答案:

答案 0 :(得分:2)

我认为您正在尝试将字符串传递给其他活动,您需要将其传递给其他活动。

String messageToPass= "Hello Word!";

Intent intent = new Intent(this, toClassName.class); intent.putExtra("message", messageToPass); startActivity(intent);

然后在其他活动中提取,例如

Intent intent = getIntent(); String messageReceived= intent.getExtras().getString("message");

答案 1 :(得分:0)

看起来你正在制作它太复杂了#34; ......你正在尝试使用String来启动一个Activity而不是一个Intent。相反,只需传递您想要使用的Intent。例如,试试这个:

Intent intent = packageManager
            .getLaunchIntentForPackage(app.packageName);

    if (null != intent) {
        setResult(RESULT_OK, intent);
        finish();
    }

然后这样做:

public void onActivityResult(int requestCode, int resultCode, Intent data){
    if (requestCode == request_Code){
        if (resultCode == RESULT_OK){                   
            startActivity(data);
        }
    }
}