Запуск установленного приложения с нулевой активностью запуска

#android

#Android

Вопрос:

Я использую следующий код, чтобы получить список установленных приложений и запустить их.Это открывает только такие приложения, как калькулятор или часы.Когда я пытаюсь открыть приложения, такие как контакты или камера, это не работает, поскольку их активность запуска равна нулю.Как мне открыть такие приложения.

В приведенном ниже коде s[5] указывает на камеру.

        final PackageManager pm = getPackageManager();
    List<ApplicationInfo> packages = pm
        .getInstalledApplications(PackageManager.GET_META_DATA);


    for (ApplicationInfo packageInfo : packages) 
    {

        s[i]=packageInfo.packageName;
        i  ;

        Log.d(TAG, "Installed package :"   packageInfo.packageName);
        Log.d(TAG,"Launch Activity :"  pm.getLaunchIntentForPackage(packageInfo.packageName));

    }


}



    Intent mIntent = getPackageManager().getLaunchIntentForPackage(s[5]);


        try {
            startActivity(mIntent);

        } 
        catch (Exception err) {
            Toast t = Toast.makeText(getApplicationContext(),
                    "Not Found", Toast.LENGTH_SHORT);
            t.show();
        }
  

}

}

Ответ №1:

Я, наконец, смог решить проблему.Следующий код запускает все приложения.

PackageManager pm = this.getPackageManager();

     setContentView(R.layout.main);
    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
    List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0); 
    Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm)); 

    TextView c=(TextView)findViewById(R.id.textView1);
    for(int i1=0; i1<appList.size(); i1  ){ 
            c.setText(c.getText()   "n"   
                    "number: "   i1   "n"   
                    "Name: "   appList.get(i1).loadLabel(pm)   "n" 
                    ); 
    } 


    Intent i11 = new Intent(); 
    i11.setAction(Intent.ACTION_MAIN); 
    i11.addCategory(Intent.CATEGORY_LAUNCHER); 
    i11.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 
    i11.setComponent(new ComponentName(appList.get (3).activityInfo.applicationInfo.packageName, appList.get(3).activityInfo.name)); 
    startActivity(i11);