在主屏幕上创建应用程序快捷方式

时间:2014-03-14 10:49:10

标签: android

当我在任何手机上安装应用程序时,我想在主屏幕上安装快捷方式,我已经尝试了它的代码,它也很完美,但每次启动应用程序时它都会创建一个新的快捷方式(如果我开始应用程序3次,然后它在主屏幕上创建3快捷方式)请帮我这个,

这是我的代码,

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

    addshortcut();

    setContentView(R.layout.activity_splash);

    ivsplash=(ImageView)findViewById(R.id.ivsplash);

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            Intent i = new Intent(Splash.this, Home.class);
            startActivity(i);
            finish();
        }
    },SPLASH_TIME_OUT);


}



private void addshortcut() {
    // TODO Auto-generated method stub

    Intent shortcutIntent = new Intent(getApplicationContext(),
            Splash.class);

    shortcutIntent.setAction(Intent.ACTION_MAIN);

    Intent addIntent = new Intent();
    addIntent
            .putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "anaxus");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
        Intent.ShortcutIconResource.fromContext(getApplicationContext(),
                    R.drawable.applogo1));

    addIntent
            .setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    getApplicationContext().sendBroadcast(addIntent);
}
谢谢。

3 个答案:

答案 0 :(得分:1)

因为每次启动应用程序时都会调用onCreate()。您知道Play商店在安装后会自动在主屏幕上放置快捷方式吗?

无论如何,您的问题已在此处得到解答:Android create shortcuts on the home screen

编辑:从上面的帖子中获取的代码;

XML(清单):

<activity android:name=".ShortCutActivity" android:label="@string/shortcut_label">
  <intent-filter>
    <action android:name="android.intent.action.CREATE_SHORTCUT" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</activity>

爪哇:

// create shortcut if requested
ShortcutIconResource icon =
    Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);

Intent intent = new Intent();

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

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

setResult(RESULT_OK, intent);

答案 1 :(得分:0)

在应用程序启动时首次为应用程序启动设置一个bool,一旦应用程序启动将其设置为false,并根据条件调用addShortcut()方法。每次启动应用程序时,它都会阻止调用该函数。

public static boolean isAppRunningFirstTime(Context context, String filename)
{
    SharedPreferences sharedPreferences = context.getSharedPreferences(filename, Context.MODE_PRIVATE);
    boolean isAppRunningForFirstTime = sharedPreferences.getBoolean(context.getString(R.string.app_name), true);
    return isAppRunningForFirstTime;
}

public static void setAppRunningForFirstTime(Context context, String filename)
{
    SharedPreferences sharedPreferences = context.getSharedPreferences(filename, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean(context.getString(R.string.app_name), false);
    editor.commit();
}

完成shorcut添加代码后,将bool设置为false。

答案 2 :(得分:0)

您的问题不明确,但我假设您确定了一种方法,以确保不会创建重复的快捷方式。不幸的是,没有直接的方法来了解主屏幕上已经有哪些图标。无论如何,你不会想那样做。如果用户在安装后手动删除了快捷方式,那么如果您不断重新创建它们,它们会很烦人。

您希望自己的应用本身能够跟踪它是否已创建快捷方式。最简单的方法是使用SharedPreference项。以下是Android Developers Storage Options page的示例。

public class Calc extends Activity {
    public static final String PREFS_NAME = "MyPrefsFile";

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

       // Restore preferences
       SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
       boolean silent = settings.getBoolean("silentMode", false);
       setSilent(silent);
    }

    @Override
    protected void onStop(){
       super.onStop();

      // We need an Editor object to make preference changes.
      // All objects are from android.context.Context
      SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
      SharedPreferences.Editor editor = settings.edit();
      editor.putBoolean("silentMode", mSilentMode);

      // Commit the edits!
      editor.commit();
    }
}