我有一个可以执行各种功能的应用程序。我想在我的Android手机主屏幕中为最常用的功能创建一个快捷方式。
任何人都可以告诉我(使用代码以及代码实际如何工作)如何创建快捷方式?我见过很多行代码,但我无法理解。请解释一下。
我使用了以下代码=>主要问题是在主屏幕中创建了快捷方式。但当我点击它时,一个Toast显示消息,如“应用程序未安装在您的手机上”。并在日志中显示错误消息
1)WARN / ActivityManager(58):权限 否认:checkComponentPermission()reqUid = 10046 2)WARN / ActivityManager(58):权限拒绝:从ProcessRecord {44f19b88 123:com。启动Intent {act = android.intent.action.VIEW flg = 0x10000000 cmp = aaa / .s bnds = [3,240] [77,319]}}。 android.launcher / 10025}(pid = 123,uid = 10025)需要null 3)ERROR / Launcher(123):启动器没有启动Intent的权限{act = android.intent.action.VIEW flg = 0x10000000 cmp = a.a.a / .s bnds = [3,240] [77,319]}。确保为相应的活动创建MAIN intent-filter或使用此活动的导出属性。 tag = ShortcutInfo(title = Sukumar)intent = Intent {act = android.intent.action.VIEW flg = 0x10000000 cmp = a.a.a / .s bnds = [3,240] [77,319]} 4)ERROR / Launcher(123):java.lang.SecurityException:Permission Denial:从ProcessRecord启动Intent {act = android.intent.action.VIEW flg = 0x10000000 cmp = aaa / .s bnds = [3,240] [77,319]} {44f19b88 123:com.android.launcher / 10025}(pid = 123,uid = 10025)需要null
`package a.a.a;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class ShortActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent i=new Intent(this,s.class);
Intent j=new Intent();
j.putExtra(Intent.EXTRA_SHORTCUT_INTENT, i);
j.putExtra(Intent.EXTRA_SHORTCUT_NAME,"Sukumar");
j.putExtra(Intent.EXTRA_SHORTCUT_ICON,R.drawable.icon);
j.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
this.sendBroadcast(j);
}
}`
答案 0 :(得分:0)
要在Android主屏幕上创建应用程序快捷方式,我们只需要使用操作com.android.launcher.action.INSTALL_SHORTCUT
触发一个简单的Intent。快捷方式的名称和图标,我们可以使用Intent的exrta参数
检查以下方法:
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intentActivity);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, textShortcut);
Parcelable iconResource = (Parcelable) bitmap;
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, iconResource);
intent.putExtra("duplicate", duplicateNeed); // (duplicateNeed=false)
// will not allow the
// duplicate same name
// shortcuts.
intent.setAction(INSTALL_SHORTCUT_ACTION);
getApplicationContext().sendBroadcast(intent);