Страница 1 из 1

Иконка на рабочий стол.

Добавлено: 22 мар 2014, 18:24
deathcoretm
Здравствуйте. Программирование изучать я начал не так давно. Поэтому многого не знаю и пришёл за подсказкой сюда.
Я занимаюсь созданием тем для GO Launcher EX.
И так как помимо тем, у меня есть еще другие приложения на маркете я подумал можно ли сделать так что при установке моей темы у пользователя будут появляться иконки моих приложений и при нажатии на них будет открываться страница Google Play с именно этим приложением.
Буду очень признателен вам за помощь.
XDA и 4PDA молчат и нет никаких ответов.

Добавлено: 23 мар 2014, 21:43
deathcoretm
Неужели никто не подскажет??

Re: Иконка на рабочий стол.

Добавлено: 24 мар 2014, 01:18
altwin

Re: Иконка на рабочий стол.

Добавлено: 24 мар 2014, 14:05
deathcoretm
Спасибо конечно, можно подсказку что я не так делаю.

В манифесте указал :

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

Сам код вставил в основной (его имя template.java) . Жалуется на MainActivity.class
Я так понял нужно создать этот MainActivity ? И что в нем прописать?

Код: Выделить всё

    
    public void createShortCut(){
    // a Intent to create a shortCut
    Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    //repeat to create is forbidden
    shortcutintent.putExtra("duplicate", false);
    //set the name of shortCut
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "FlyPanda");

    //set icon
    Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.panda);
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
    //set the application to lunch when you click the icon
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext() , MainActivity.class));
    //sendBroadcast,done
    sendBroadcast(shortcutintent);
}

Re: Иконка на рабочий стол.

Добавлено: 24 мар 2014, 14:37
mdzht
deathcoretm писал(а):Спасибо конечно, можно подсказку что я не так делаю.

В манифесте указал :
Сам код вставил в основной (его имя template.java) . Жалуется на MainActivity.class
Я так понял нужно создать этот MainActivity ? И что в нем прописать?
Нюка пoпробуйте тек

[syntax=java5] public void createShortCut(){
// a Intent to create a shortCut
Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
//repeat to create is forbidden
shortcutintent.putExtra("duplicate", false);
//set the name of shortCut
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "FlyPanda");

//set icon
Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.panda);
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
//set the application to lunch when you click the icon
shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext() , template.class));
//sendBroadcast,done
sendBroadcast(shortcutintent);
}[/syntax]

Re: Иконка на рабочий стол.

Добавлено: 24 мар 2014, 14:54
deathcoretm
Вставил, не жалуется. Скомпилировал, установил. Но ничего не появилось на рабочем столе :(
Посмотрите что не так я делаю.
Вот весь код template.java

Код: Выделить всё

package ru.tirexdev.windows8theme;

import ru.tirexdev.windows8theme.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.KeyEvent;

public class template extends Activity {
    /** Called when the activity is first created. */
	
	class CustomAlertDialog extends AlertDialog {
		public CustomAlertDialog(Context context) {
			super(context);
		}
		
		@Override
	    public boolean onKeyDown(int keyCode, KeyEvent event) {
			boolean ret = super.onKeyDown(keyCode, event);
			finish();
			return ret;
		}
	}
	
	private CustomAlertDialog mDialog;
	
	public void createShortCut(){
		    // a Intent to create a shortCut
		    Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
		    //repeat to create is forbidden
		    shortcutintent.putExtra("duplicate", false);
		    //set the name of shortCut
		    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "FlyPanda");
		 
		    //set icon
		    Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.panda_1);
		    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
		    //set the application to lunch when you click the icon
		    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext() , template.class));
		    //sendBroadcast,done
		    sendBroadcast(shortcutintent);
		}
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
	    
	    if (isExistSkin("com.gau.go.launcherex")) {
	    	startGOLauncher("com.gau.go.launcherex");
	    	finish();
	    	return;
	    }
	    
	    mDialog = new CustomAlertDialog(this);
	    mDialog.setTitle(R.string.dialogtitle);
	    mDialog.setMessage(getResources().getString(R.string.dialogcontent));
	    mDialog.setButton(DialogInterface.BUTTON_POSITIVE, getResources().getString(R.string.dialogok), 
	    		new DialogInterface.OnClickListener() {
	    	
			@Override
			public void onClick(DialogInterface dialog, int which) {
				String marketuriString = "market://search?q=pname:com.gau.go.launcherex";
				Intent EMarketintent = new Intent(Intent.ACTION_VIEW, Uri.parse(marketuriString));
				EMarketintent.setPackage("com.android.vending");
				EMarketintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//				Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(marketuriString));		
				try {
					startActivity(EMarketintent);
				} catch (ActivityNotFoundException e) {
					String link = "http://61.145.124.93/soft/3GHeart/com.gau.go.launcherex.apk";
					Uri browserUri = Uri.parse(link);
					Intent browserIntent = new Intent(Intent.ACTION_VIEW, browserUri);
					browserIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
					try {
						startActivity(browserIntent);
					} catch (ActivityNotFoundException e2) {
						// TODO: handle exception
						e2.printStackTrace();
					}
				} catch (Exception e3) {
					// TODO: handle exception
					e3.printStackTrace();
				}
				finish();
				
			}
		});
	    mDialog.show();
    }
    @Override
    protected void onDestroy() {
    	super.onDestroy();
    	android.os.Process.killProcess(android.os.Process.myPid());
    }
    
    private boolean isExistSkin(String packageName) {
		try {
				createPackageContext(packageName,
						Context.CONTEXT_IGNORE_SECURITY);
			} catch (NameNotFoundException e) {
				return false;
			}
        return true;
	}

    private void startGOLauncher(String packageName){
		PackageManager packageMgr = this.getPackageManager();
		Intent launchIntent = packageMgr.getLaunchIntentForPackage(packageName);
		if (null != launchIntent){
			try
			{
				this.startActivity(launchIntent);
			}
			catch(ActivityNotFoundException e)
			{
				
			}
		}
    }
}

Re: Иконка на рабочий стол.

Добавлено: 25 мар 2014, 16:04
deathcoretm
Прошу ответить кто может..