Android 启用单击列表项
“我的代码”在列表视图中显示具有特定权限的已安装应用。我想打开您可以卸载每个列表项(应用)上的应用的设置。我该怎么做 以下是打开应用程序设置的片段Android 启用单击列表项,android,Android,“我的代码”在列表视图中显示具有特定权限的已安装应用。我想打开您可以卸载每个列表项(应用)上的应用的设置。我该怎么做 以下是打开应用程序设置的片段 packageName = "com.wagtailapp"; try { // Open the specific App Info page: Intent intent = new Intent( android.provider.Settings.ACTION_APPLI
packageName = "com.wagtailapp";
try {
// Open the specific App Info page:
Intent intent = new Intent(
android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
} catch (ActivityNotFoundException e) {
// e.printStackTrace();
// Open the generic Apps page:
Intent intent = new Intent(
android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
startActivity(intent);
这是我的活动
public class MainActivity extends Activity {
ArrayList<String> results = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getInstalledApps(this);
ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_listview, results);
ListView listView = (ListView) findViewById(R.id.mobile_list);
listView.setAdapter(adapter);
}
private ArrayList<String> getInstalledApps(Context context) {
PackageManager packageManager = context.getPackageManager();
List<PackageInfo> applist = packageManager.getInstalledPackages(0);
Iterator<PackageInfo> it = applist.iterator();
while (it.hasNext()) {
PackageInfo pk = (PackageInfo) it.next();
if ((pk.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
Log.v("system app using internet = ", ""+pk.applicationInfo.loadLabel(packageManager));
continue;
}
if (PackageManager.PERMISSION_GRANTED == packageManager .checkPermission(Manifest.permission.INTERNET, pk.packageName) ||
PackageManager.PERMISSION_GRANTED == packageManager .checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, pk.packageName))
results.add("" + pk.applicationInfo.loadLabel(packageManager));
}
Log.v("app using internet = ", results.toString());
return results;
}
}
公共类MainActivity扩展活动{
ArrayList结果=新建ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getInstalledApps(本);
ArrayAdapter=新的ArrayAdapter(this,R.layout.activity\u listview,results);
ListView ListView=(ListView)findViewById(R.id.mobile\u列表);
setAdapter(适配器);
}
私有ArrayList getInstalledApps(上下文){
PackageManager PackageManager=context.getPackageManager();
List applist=packageManager.getInstalledPackages(0);
迭代器it=applist.Iterator();
while(it.hasNext()){
PackageInfo pk=(PackageInfo)it.next();
if((pk.applicationInfo.flags和applicationInfo.FLAG_系统)!=0){
Log.v(“使用internet的系统应用程序=”,“”+pk.applicationInfo.loadLabel(packageManager));
继续;
}
if(PackageManager.PERMISSION_grated==PackageManager.checkPermission(Manifest.PERMISSION.INTERNET,pk.packageName)||
PackageManager.PERMISSION\u grated==PackageManager.checkPermission(Manifest.PERMISSION.READ\u外部存储,pk.packageName))
结果.添加(“+pk.applicationInfo.loadLabel(packageManager));
}
Log.v(“使用internet的应用程序=,results.toString());
返回结果;
}
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getInstalledApps(本);
ArrayAdapter=新的ArrayAdapter(this,R.layout.activity\u listview,results);
ListView ListView=(ListView)findViewById(R.id.mobile\u列表);
setAdapter(适配器);
setOnItemClickListener(this);
}
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
//你的代码在这里
}
试试这个:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String packageName = (String)parent.getItemAtPosition(position);
try {
// Open the specific App Info page:
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
} catch (ActivityNotFoundException e) {
// e.printStackTrace();
// Open the generic Apps page:
Intent intent = new Intent( android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
startActivity(intent);
}
});
listView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
字符串packageName=(字符串)parent.getItemAtPosition(位置);
试一试{
//打开特定应用程序信息页面:
意向意向=新意向(android.provider.Settings.ACTION\u APPLICATION\u DETAILS\u Settings);
setData(Uri.parse(“包:“+packageName”);
星触觉(意向);
}捕获(ActivityNotFounde异常){
//e.printStackTrace();
//打开通用应用程序页面:
意向意向=新意向(android.provider.Settings.ACTION\u MANAGE\u APPLICATIONS\u Settings);
星触觉(意向);
}
});
查看它是否有效。将此代码粘贴到listView.setAdapter(适配器)下面的onCreate()中
listView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
字符串packageName=results.get(位置);
意向意向=新意向(android.provider.Settings.ACTION\u APPLICATION\u DETAILS\u Settings);
intent.setFlags(intent.FLAG\u活动\u新任务);
setData(Uri.parse(“包:“+packageName”);
星触觉(意向);
}
});
我认为您缺少listView.setOnItemClickListener();
您需要创建自定义适配器,并在适配器的getView()方法中处理每个项(视图)单击事件。您的活动必须实现“OnItemClickListener”方法onItemClick(AdapterView,view,int,long)MainActivity类型的必须重写或实现超类型方法AdapterView类型中的方法setOnItemClickListener(AdapterView.OnItemClickListener)不适用于参数(MainActivity)我实现了你的代码,但它没有做任何事情!它会打开设置,但会立即关闭设置,并在半秒钟后返回应用程序。请尝试以下操作:int UNINSTALL_REQUEST_code=1;startActivityForResult(intent,UNINSTALL_REQUEST_code);但在哪里?我很困惑它仍然是一样的,它会打开,但会在半秒钟后返回尝试以下操作:int UNINSTALL\u REQUEST\u CODE=1;intent.puttera(intent.EXTRA\u RETURN\u RESULT,true);startractivityforresult(intent,UNINSTALL\u REQUEST\u CODE);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String packageName = (String)parent.getItemAtPosition(position);
try {
// Open the specific App Info page:
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
} catch (ActivityNotFoundException e) {
// e.printStackTrace();
// Open the generic Apps page:
Intent intent = new Intent( android.provider.Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
startActivity(intent);
}
});
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String packageName = results.get(position);
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("package:" + packageName));
startActivity(intent);
}
});