如何在主屏幕上设置快捷方式的启动意图? Android的

时间:2014-01-15 00:02:33

标签: android android-intent intentfilter

我对Android很新,我无法解决这个问题。我已经成功地从我的应用程序中创建了一个快捷方式。唯一的问题是我无法决定点击快捷方式后发生的事情。它只是启动我的MainActivity,但我希望它在选择主活动时也传递数据。这就是我的......

Intent shortcutIntent = new Intent(getActivity().getApplicationContext(),
            MainActivity.class);

    shortcutIntent.setAction(Intent.ACTION_MAIN);

    Intent addIntent = new Intent();
    addIntent
            .putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, f.getName());
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
            Intent.ShortcutIconResource.fromContext(getActivity().getApplicationContext(),
                    R.drawable.icon_folderbluegray));
    addIntent.putExtra("info for Main Activity","Hello");

    addIntent
            .setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    getActivity().getApplicationContext().sendBroadcast(addIntent);

但是当我这样做时,我得到了空......

Bundle extras = getIntent().getExtras();

这是我在Mainfest中所拥有的。

             <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CREATE_SHORTCUT"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>

1 个答案:

答案 0 :(得分:0)

你正在做的是sendigBroadcast ....这就是为什么你得到空

getActivity().getApplicationContext().sendBroadcast(addIntent);

这就是你在这里获得null的原因

Bundle extras = getIntent().getExtras();

要处理实现广播接收器所需的结果

编辑实施接收者

public final BroadcastReceiver noteCompletedReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(NoteListActivity.this, "Broadcast received",   Toast.LENGTH_LONG).show();
       //HANDLE HERE THE INTENT
    }
};

你还需要设置一个intentFilter,你可以在onCreate方法中注册动态,如

IntentFilter filter = new IntentFilter(=====SOME CONSTANT THAT YOU DEFINE AND THAS PASSED FROM THE STARTING INTENT====);
registerReceiver(noteCompletedReceiver, filter);

在您的活动的onDestroy方法中,您需要调用

unregisterReceiver(noteCompletedReceiver);