在主屏幕上创建 android 个应用程序快捷方式
creating android app shortcut on the home screen
我需要在主屏幕上为我的应用添加快捷方式(以编程方式)。
我知道应用商店默认执行此操作,但首先,该应用不会出现在 google 应用商店中。
找了很多,翻来覆去发现基本都是一样的代码行,好像对我没用。
我使用的代码:
在清单中:
<activity android:name=".MainScreenActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在 onCreate 方法中,我调用了执行以下操作的函数:
private boolean createShortcut()
{
//create shortcut intent
Intent shortcutIntent = new Intent(getApplicationContext(),MainScreenActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);
//create intent to add and define the shortcut
Intent addingIntent = new Intent();
addingIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,shortcutIntent);
addingIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"SenseGuard");
addingIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(getApplicationContext(),R.drawable.peak_detection_icon));
addingIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addingIntent);
}
我尝试将 "getApplicationContext()" 切换为 "this"。
我尝试使用实际的平板电脑和模拟器,但无法正常工作。
这样做:
第 1 步:
更新您的 manifest.xml :
<uses-permission
android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
第 2 步:
在您的 MainActivity.java 中创建 addShortcut() 方法并在其块中放置以下代码:
private void addShourcut(){
Intent shortCutIntent = new Intent(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 , "Convertor");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE ,
Intent.ShortcutIconResource.fromContext(getApplicationContext() , R.mipmap.ic_launcher));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
addIntent.putExtra("duplicate" , false);
getApplicationContext().sendBroadcast(addIntent);
}
第三步:
为要创建快捷方式的视图设置 onClickListener :
img_pin = (ImageView) findViewById(R.id.img_pin);
img_pin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addShourcut();
Toast.makeText(MainActivity.this, "shortcut created !", Toast.LENGTH_SHORT).show();
}
});
这对我有用...
快乐编码...:)
该代码不能保证有效。该广播也由 ShortcutManagerCompat 发送(您可能应该使用它而不是手动发送广播)。
但是,这样做有两个问题。
不保证您的默认启动器会收听此广播。例如,Nova Launcher 默认禁用此行为。其他启动器甚至可能根本不会监听该操作。
在 Android Oreo (26) 及更高版本上,这不会像您期望的那样工作(阅读关于我链接的方法的评论以获取更多详细信息)。
您仍然可以使用此逻辑并希望它适用于您的某些用户,但请记住,许多默认启动器甚至不再有应用程序抽屉,因此添加快捷方式可能会给您的用户带来重复的图标。另外,我知道,至少对我来说,我的主屏幕是按照我想要的方式组织的,如果我安装了一个应用程序,它会把自己添加到我的主屏幕上真的很烦人。
如果您正在使用默认的 AOSP 启动器(或关闭的分支),但是它不起作用,请确保将其添加到您的清单中:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
我需要在主屏幕上为我的应用添加快捷方式(以编程方式)。 我知道应用商店默认执行此操作,但首先,该应用不会出现在 google 应用商店中。 找了很多,翻来覆去发现基本都是一样的代码行,好像对我没用。
我使用的代码: 在清单中:
<activity android:name=".MainScreenActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在 onCreate 方法中,我调用了执行以下操作的函数:
private boolean createShortcut()
{
//create shortcut intent
Intent shortcutIntent = new Intent(getApplicationContext(),MainScreenActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);
//create intent to add and define the shortcut
Intent addingIntent = new Intent();
addingIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,shortcutIntent);
addingIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"SenseGuard");
addingIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(getApplicationContext(),R.drawable.peak_detection_icon));
addingIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
getApplicationContext().sendBroadcast(addingIntent);
}
我尝试将 "getApplicationContext()" 切换为 "this"。 我尝试使用实际的平板电脑和模拟器,但无法正常工作。
这样做:
第 1 步:
更新您的 manifest.xml :
<uses-permission
android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
第 2 步:
在您的 MainActivity.java 中创建 addShortcut() 方法并在其块中放置以下代码:
private void addShourcut(){
Intent shortCutIntent = new Intent(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 , "Convertor");
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE ,
Intent.ShortcutIconResource.fromContext(getApplicationContext() , R.mipmap.ic_launcher));
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
addIntent.putExtra("duplicate" , false);
getApplicationContext().sendBroadcast(addIntent);
}
第三步:
为要创建快捷方式的视图设置 onClickListener :
img_pin = (ImageView) findViewById(R.id.img_pin);
img_pin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addShourcut();
Toast.makeText(MainActivity.this, "shortcut created !", Toast.LENGTH_SHORT).show();
}
});
这对我有用... 快乐编码...:)
该代码不能保证有效。该广播也由 ShortcutManagerCompat 发送(您可能应该使用它而不是手动发送广播)。
但是,这样做有两个问题。
不保证您的默认启动器会收听此广播。例如,Nova Launcher 默认禁用此行为。其他启动器甚至可能根本不会监听该操作。
在 Android Oreo (26) 及更高版本上,这不会像您期望的那样工作(阅读关于我链接的方法的评论以获取更多详细信息)。
您仍然可以使用此逻辑并希望它适用于您的某些用户,但请记住,许多默认启动器甚至不再有应用程序抽屉,因此添加快捷方式可能会给您的用户带来重复的图标。另外,我知道,至少对我来说,我的主屏幕是按照我想要的方式组织的,如果我安装了一个应用程序,它会把自己添加到我的主屏幕上真的很烦人。
如果您正在使用默认的 AOSP 启动器(或关闭的分支),但是它不起作用,请确保将其添加到您的清单中:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />