2014-01-15 4 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(); 

Для обработки результата вам необходимо внедрить широковещательный приемник

EDIT ОСУЩЕСТВЛЕНИЮ RECEIVER

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); 
+0

Как я должен реализовать широковещательный приемник? – user3195590

+0

проверить, отредактировал ли ответ – Android

+0

, так что бы манифест включал тег приемника? – user3195590

Смежные вопросы