Возник вопрос о снятии приложений в программе. Я использую такой код:
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
public class dop extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dop);
PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<String> myList = new ArrayList<String>();
ArrayList<ResolveInfo> list = (ArrayList<ResolveInfo>) pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED);
for (ResolveInfo rInfo : list) {
System.out.println("Installed Applications " + rInfo.activityInfo.applicationInfo.loadLabel(pm).toString());
myList.add(rInfo.activityInfo.applicationInfo.loadLabel(pm).toString());
}
ListView listView = (ListView) findViewById(R.id.list);
ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, myList);
listView.setAdapter(aa);
}
public void onListItemClick(
ListView parent, View v, int position, long id) {
Intent intent = new Intent(Intent.ACTION_DELETE);
intent.setData(Uri.parse("package:"+"some.package.to.remove"));
startActivity(intent);
}
}
Но код удаления не работает. Что я не так делаю?
onListItemClick()
доступен только в ListActivity
(и это фактически защищенный член), поэтому в основном вы не переопределяете ничего, и этот метод никогда не будет вызван.
(чтобы быть уверенным, что вы что-то переопределяете, поставьте @Override
до этого метода, компилятор будет жаловаться, если это не переопределение, и вы что-то знаете там не так)
По мере того, как вы создаете Activity
, вам нужно выполнить его реализацию OnItemClickListener
, а в onCreate()
установить этот прослушиватель на ListView
:
public class dop extends Activity implements OnItemClickListener {
//.....
public void onCreate(Bundle bndl) {
//....
listView.setOnItemClickListener(this);
}
@Override
public void onItemClick(/*...*/) {
// put here your click code
}
}
Log.d("...","onitemclick called");
или установите Log.d("...","onitemclick called");
останова на этой строке и посмотрите, достигнута ли при отладке. Обратите внимание, что в Android лучше практиковать используйте журнал вместо System.out.println)