2014-01-15 93 views
2

我對android非常陌生,我很難解決這個問題。我已經成功地在我的應用程序內創建了一個快捷方式。唯一的問題是,我不能指定點擊快捷方式後會發生什麼情況。它只是啓動我的MainActivity,但我希望它也可以在選擇主要活動時傳遞它的數據。以下是我有...如何在主屏幕上設置快捷方式的啓動意向? Android

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

你在做什麼是sendigBroadcast ....這就是爲什麼你得到空

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

這就是爲什麼你在包中獲得零這裏

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的,你可以像

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

,並在活動中的onDestroy方法,你需要調用

unregisterReceiver(noteCompletedReceiver); 
登記在onCreate方法動態
+0

我應該如何實施廣播接收機? – user3195590

+0

檢查我編輯答案 – Android

+0

清單中會包含接收者標籤嗎? – user3195590

相關問題