当我在任何手机上安装应用程序时,我想在主屏幕上安装快捷方式,我已经尝试了它的代码,它也很完美,但每次启动应用程序时它都会创建一个新的快捷方式(如果我开始应用程序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);
}
谢谢。
答案 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();
}
}