2017-12-27 30 views
0

アクティビティを開くことなく、特定のライブストリームの再生をトリガーするホーム画面のショートカットを自分のプレーヤーアプリから作成しようとしています。 残念ながら、これは... shortcurtが作成されAndroid Oアクティビティを開かないホーム画面のショートカットを作成する方法

ShortcutManager sM = c.getSystemService(ShortcutManager.class); 

    Intent intent2 = new Intent(c.getApplicationContext(), APPBroadcastReceiver.class); 
    intent2.setAction("toggle_intent"); 
    intent2.putExtra("id", 1); 
    ShortcutInfo shortcut2 = new ShortcutInfo.Builder(c,MSG_SHORCUT_CUSTOM) 
      .setIntent(intent2) 
      .setShortLabel("ShortLabel") 
      .setLongLabel("LongLaber") 
      .setDisabledMessage("DisabledMessage") 
      .setIcon(Icon.createWithResource(c, R.mipmap.ic_add_outline_short)) 
      .build(); 
    listshortcut.add(shortcut2); 

    Intent pinnedShortcutCallbackIntent = mShortcutManager.createShortcutResultIntent(shortcut2); 
    PendingIntent successCallback = PendingIntent.getBroadcast(context, 0, pinnedShortcutCallbackIntent, 0); 

mShortcutManager.requestPinShortcut(pinShortcutInfo, successCallback.getIntentSender()); 

を動作しませんが、私はそれを押したときに私が得るすべては活動の活動によってできるだけ早く私は私のレシーバクラスを置き換えるよう 「をインストールしていないアプリケーション」です開く。

ホーム画面のショートカットからアクティビティを開かないカスタムインテントをトリガすることはできますか?

答えて

2

直接ではありません。私の知る限り、アプリのショートカットはActivitiesを指すことができます。

public class IntentForwardActivity extends AppCompatActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Intent broadcastIntent = new Intent(getIntent()); 
     broadcastIntent.setClassName(getApplicationContext(), APPBroadcastReceiver.class); 
     sendBroadcast(broadcastIntent); 
     finish(); 
    } 
} 

は特に、Activitiesは、レイアウトを持っているか、setContentView()を呼び出す必要はありません。しかし、あなたはちょうど前方IntentsあなたBroadcastReceiverへのActivity非常に薄くすることができます。

+0

この回避策をお寄せいただきありがとうございます。申し訳ありませんが、アプリは現在のアクティビティを再表示します。私は、アプリケーションのUIを開くことなく、ホーム画面から再生を切り替えようとしています。 – user1026605

+0

これは、タスクアフィニティに関連する問題のようです。マニフェストの 'IntentForwardActivity'の[起動モード](https://developer.android.com/guide/topics/manifest/activity-element.html#lmode)を' 'singleInstance''に設定してみてください。 –

+0

ありがとうございますが、問題は私たちが開いている画面が閉じられているのを見ることができるということです。ユーザーにとってはうまくいかないでしょう... – user1026605

関連する問題