Ярлык Добавить на главный экран Android - PullRequest
0 голосов
/ 22 октября 2018

Как мне сделать что-то похожее на Telegram и многие другие приложения, которые позволяют вам добавить элемент в этом случае с помощью telegram - это контакт, который, если щелкнуть по нему, откроет окно чата контакта.

Я бынравится делать что-то вроде этого, добавляя элемент в дом, если вы щелкнете по нему, позволяет выполнить определенную операцию.

Но мне нужно открыть приложение, внешнее по отношению к моему.

Редактировать:

Намерение, которое должно вызываться при нажатии на ссылку на домашнем экране, элемент подключения str name.

Intent appIntent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://instagram.com/_u/"+str));
appIntent.setPackage("com.instagram.android");
Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://instagram.com/"+str));
 try {
     startActivity(appIntent);
} catch (ActivityNotFoundException ex) {
    startActivity(webIntent);
}

Редактировать2:

добавить:

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

код:

if (ShortcutManagerCompat.isRequestPinShortcutSupported(getBaseContext())) {
Intent instagramIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://instagram.com/_u/" + str));
instagramIntent.setPackage("com.instagram.android");
Bitmap bmp = getCroppedBitmap(bitmap);
final IconCompat icon = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) ? IconCompat.createWithAdaptiveBitmap(bmp) : IconCompat.createWithBitmap(bmp);
final ShortcutInfoCompat shortcut = new ShortcutInfoCompat.Builder(getBaseContext(), UUID.randomUUID().toString())
                        .setShortLabel(str)
                        .setLongLabel(str)
                        .setIcon(icon)
                        .setIntent(instagramIntent)
                        .build();
ShortcutManagerCompat.requestPinShortcut(getBaseContext(), shortcut, null);
            }

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Не уверен, что я понимаю, чего вы хотите достичь, но здесь идет речь.В своем манифесте вы можете добавить код, подобный этому

<activity
    android:name=".activityName"
    android:screenOrientation="sensorLandscape">
        <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

Действие фильтра намерений. Главное позволяет запустить вашу деятельность с главного экрана.Так что просто добавьте этот фильтр к действиям, которые вы хотите поместить на домашний экран.

0 голосов
/ 24 октября 2018

Если я правильно понимаю, вы хотите запустить приложение из ярлыка, созданного вашим приложением.Затем вы можете сделать что-то вроде этого:

public void createShortCut{
    Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    shortcutintent.putExtra("duplicate", false);
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcutname));
    Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext, R.drawable.icon);
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent("com.whatsapp"));
    sendBroadcast(shortcutintent);
}

Проверить это

Редактировать:

Вот лучший способ сделать это с помощью ShortcutManagerCompat:

fun createShortCut(){
    val str= ""
    val uri = Uri.parse("http://instagram.com/_u/"+str)
    val instagramIntent = Intent(Intent.ACTION_VIEW,uri)
    instagramIntent.setPackage("com.instagram.android")
    val icon = IconCompat.createWithResource(this,R.drawable.ic_launcher_background)
    val pinShortcutInfo = ShortcutInfoCompat.Builder(this, "shortcutID")
                .setIcon(icon)
                .setShortLabel("MyShortcut")
                .setIntent(instagramIntent)
                .build()
    ShortcutManagerCompat.requestPinShortcut(this,pinShortcutInfo,null)
}
...