Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法从所有启动器列表中启动默认主屏幕_Android_Launcher - Fatal编程技术网

Android 无法从所有启动器列表中启动默认主屏幕

Android 无法从所有启动器列表中启动默认主屏幕,android,launcher,Android,Launcher,我正在尝试获取我手机上所有可用启动器的列表。单击列表中的特定启动器应使其成为默认主屏幕启动器。点击默认手机启动器(三星TouchWiz Home),应用程序不幸停止(但返回到先前设置的主屏幕)。我只能打开第三方启动器,但它没有被设置为默认主屏幕,单击主屏幕按钮,它会返回到上一个主屏幕。代码如下。有没有可能让它像一个弹出列表一样理想地工作,android让它选择启动主屏幕并将其设为默认?需要帮忙吗?谢谢大家! public class AppsListActivity extends Ac

我正在尝试获取我手机上所有可用启动器的列表。单击列表中的特定启动器应使其成为默认主屏幕启动器。点击默认手机启动器(三星TouchWiz Home),应用程序不幸停止(但返回到先前设置的主屏幕)。我只能打开第三方启动器,但它没有被设置为默认主屏幕,单击主屏幕按钮,它会返回到上一个主屏幕。代码如下。有没有可能让它像一个弹出列表一样理想地工作,android让它选择启动主屏幕并将其设为默认?需要帮忙吗?谢谢大家!

    public class AppsListActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_apps_list);
    loadApps();
    loadListView();
    addClickListener();
}
private PackageManager manager;
private List<AppDetail> apps;
private void loadApps(){
    manager = getPackageManager();
    apps = new ArrayList<AppDetail>();
    Intent i = new Intent(Intent.ACTION_MAIN, null);
    i.addCategory(Intent.CATEGORY_HOME);

    List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0);
    for(ResolveInfo ri:availableActivities){
        AppDetail app = new AppDetail();  
        /* public class AppDetail {
        CharSequence label;
        CharSequence name;
        Drawable icon;}*/
        app.label = ri.loadLabel(manager);
        app.name = ri.activityInfo.packageName;
        app.icon = ri.activityInfo.loadIcon(manager);
        apps.add(app);
    }
}
private ListView list;
private void loadListView(){
    list = (ListView)findViewById(R.id.apps_list);
    ArrayAdapter<AppDetail> adapter = new ArrayAdapter<AppDetail>(this,R.layout.list_item,apps) {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if(convertView == null){
                convertView = getLayoutInflater().inflate(R.layout.list_item, null);
            }

            ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon);
            appIcon.setImageDrawable(apps.get(position).icon);
            TextView appLabel = (TextView)convertView.findViewById(R.id.item_app_label);
            appLabel.setText(apps.get(position).label);
            TextView appName = (TextView)convertView.findViewById(R.id.item_app_name);
            appName.setText(apps.get(position).name);
            return convertView;
        }
    };
    list.setAdapter(adapter);    }

private void addClickListener() {
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> av, View v, int pos,long id){
            Intent i = manager.getLaunchIntentForPackage(apps.get(pos).name.toString());
            ComponentName cn = i.getComponent();
            i.setClassName(cn.getPackageName(),cn.getClassName());
            i.setAction(Intent.ACTION_MAIN);
            i.addCategory(Intent.CATEGORY_HOME);
            i.addCategory(Intent.CATEGORY_DEFAULT);
            AppsListActivity.this.startActivity(i);

        }
    });
}
}
公共类AppsListActivity扩展活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u apps\u列表);
loadApps();
loadListView();
addClickListener();
}
私人包装经理;
私人列表应用程序;
私有void loadApps(){
manager=getPackageManager();
apps=newarraylist();
意向i=新意向(意向.行动\主,空);
i、 添加类别(意图、类别和主页);
List availableActivities=manager.querytentActivities(i,0);
for(ResolveInfo ri:availableActivities){
AppDetail app=新的AppDetail();
/*公共类AppDetail{
字符序列标签;
字符序列名称;
可绘制图标;}*/
app.label=ri.loadLabel(管理器);
app.name=ri.activityInfo.packageName;
app.icon=ri.activityInfo.loadIcon(管理器);
apps.add(app);
}
}
私有列表视图列表;
私有void loadListView(){
列表=(ListView)findViewById(R.id.apps\u列表);
ArrayAdapter=新的ArrayAdapter(此,R.layout.list_项,应用程序){
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=GetLayoutFlater()。充气(R.layout.list_项,空);
}
ImageView应用图标=(ImageView)convertView.findViewById(R.id.item\u app\u图标);
appIcon.setImageDrawable(apps.get(position.icon));
TextView appLabel=(TextView)convertView.findViewById(R.id.item\u app\u label);
appLabel.setText(apps.get(position.label));
TextView appName=(TextView)convertView.findViewById(R.id.item\u app\u name);
appName.setText(apps.get(position.name));
返回视图;
}
};
list.setAdapter(适配器);}
私有void addClickListener(){
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共链接(AdapterView av、视图v、内部位置、长id){
Intent i=manager.getLaunchIntentForPackage(apps.get(pos.name.toString());
ComponentName cn=i.getComponent();
i、 setClassName(cn.getPackageName(),cn.getClassName());
i、 设置动作(意图、动作和主);
i、 添加类别(意图、类别和主页);
i、 addCategory(意图。类别\默认值);
应用稳定性。这。启动性(i);
}
});
}
}

我尝试使用Android的默认设置应用程序。可以使用下面的代码直接启动设置应用程序进行选择

    Intent i = new Intent(Settings.ACTION_HOME_SETTINGS);
    startActivity(i);