在Android中安装时,无法在主屏幕上创建应用程序的快捷方式

时间:2014-01-23 09:15:16

标签: android android-manifest manifest homescreen

我想在home screen安装时创建应用程序的快捷方式。

我将此添加到 AndroidManifest.xml

<activity
        android:name="com.example.test.ShortCutActivity"
        android:icon="@drawable/ic_launcher"
        android:label="@string/title_activity_short_cut" >

        <intent-filter>
            <action android:name="android.intent.action.CREATE_SHORTCUT" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

</activity>

此外,我在项目中使用ShortCutActivity名称创建了Actvity。

ShortCutActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ShortcutIconResource icon =
            Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher);

        Intent intent = new Intent();

        Intent launchIntent = new Intent(this,MainActivity.class);

        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, launchIntent);
        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortCut");
        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);

        setResult(RESULT_OK, intent);
}

但它没有创造任何捷径。我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

在您的活动中使用此示例代码,该活动在AndroidManifest.xml中设置为LAUNCHER和MAIN

private void createShortcut(){
     Intent shortcutIntent = new Intent(getApplicationContext(),MainActivity.class);
     shortcutIntent.setAction(Intent.ACTION_MAIN);
     Intent intent = new Intent();
     intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
     intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ShortcutDemo");
     intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher));
     intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
     getApplicationContext().sendBroadcast(intent);
}

还在AndroidManifest.xml中应用以下权限

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

希望这对你有用

答案 1 :(得分:-1)

Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);     
shortcutIntent.setClassName(this, this.getClass().getName()); 

Intent intent = new Intent();     
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);     
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "hello");     
Parcelable iconResource = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);

intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);  
intent.setAction(Intent.ACTION_CREATE_SHORTCUT);

getApplicationContext().sendBroadcast(intent);