快捷方式添加到 Android 主屏幕
Shortcut Add to Android Home Screen
我怎样才能做一些类似于 Telegram 和许多其他应用程序的事情,它允许您在这种情况下通过电报添加一个元素是一个联系人,如果单击它会打开联系人聊天 window。
我想做这样的事情,如果你点击它,将一个元素添加到主页,允许你做一定的操作。
但我必须打开我的外部应用程序。
编辑:
在主屏幕上单击 link 时必须调用的 Intent,
str 名称连接元素。
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);
}
如果我没理解错的话,您想从您的应用程序创建的快捷方式启动应用程序。然后你可以做类似的事情:
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);
}
勾选this
编辑:
这是使用 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)
}
不确定我是否理解您想要完成的任务,但是可以了。
在您的清单中,您可以添加这样的代码
<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>
intent-filter action.Main 可以从主屏幕启动 activity。因此,只需将该过滤器添加到您想要放在主屏幕上的活动即可。
我怎样才能做一些类似于 Telegram 和许多其他应用程序的事情,它允许您在这种情况下通过电报添加一个元素是一个联系人,如果单击它会打开联系人聊天 window。
我想做这样的事情,如果你点击它,将一个元素添加到主页,允许你做一定的操作。
但我必须打开我的外部应用程序。
编辑:
在主屏幕上单击 link 时必须调用的 Intent, str 名称连接元素。
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);
}
如果我没理解错的话,您想从您的应用程序创建的快捷方式启动应用程序。然后你可以做类似的事情:
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);
}
勾选this
编辑:
这是使用 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)
}
不确定我是否理解您想要完成的任务,但是可以了。 在您的清单中,您可以添加这样的代码
<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>
intent-filter action.Main 可以从主屏幕启动 activity。因此,只需将该过滤器添加到您想要放在主屏幕上的活动即可。