我对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>
答案 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);