gpt4 book ai didi

android - 由于 android 中的卸载 Intent,结果代码始终为 0

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:28 25 4
gpt4 key购买 nike

在我的应用程序中,我正在尝试使用代码卸载应用程序

Intent uninstallIntent = new Intent(Intent.ACTION_DELETE);
uninstallIntent.setData(Uri.parse("package:" +packageName));
uninstallIntent.setAction(Intent.ACTION_VIEW);
startActivityForResult(uninstallIntent,UNINSTALL_APPLICATION);

根据我开始 Activity 的结果,我想根据用户的输入执行不同的操作,例如取消或点击确定

正如我预期的那样,单击确定的结果代码将是 RESULT_OK,单击取消的结果代码将是 RESULT_CANCEL,但实际上在这两种情况下我都得到了 RESULT_CANCEL

那么如何区分用户的输入。

谢谢!

最佳答案

经过一番思索,我终于找到了一个棘手的解决方案。

我在调用卸载 Intent 时是如何实现的 我已经使用

将包名称保存在首选项文件中
SharedPreferences prefs;
prefs.edit().putString(DELETE_PACKAGE_NAME, packageName).commit();

我在 OnActivityresult 中所做的我刚刚检查了是否仍然存在已保存包名称的应用程序,如果这意味着用户点击了取消,否则他点击了确定 .

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if(requestCode==DELETE_APP){

String requestedPackageName=prefs.getString(DELETE_PACKAGE_NAME, "");

boolean isPresent=GCMIntentService.isAppPresent(requestedPackageName, this);

if(isPresent){

//user Clicked on Cancel
}else{

//user Clicked on Ok
}


}

}

检查应用程序存在的代码

public static boolean  isAppPresent(String packageName,Context context) {


try{
ApplicationInfo info = context.getPackageManager().getApplicationInfo(packageName, 0 );
return true;

} catch( PackageManager.NameNotFoundException e ){

return false;
}

}

谢谢。

更新:

自从我在这里回答这个问题以来,平台发生了很大变化

现在您可以使用一个 Intent ,您可以在其中明确定义它是否应该返回结果

val intent = Intent(Intent.ACTION_UNINSTALL_PACKAGE).apply {
data = Uri.parse("package:$packageName")
putExtra(Intent.EXTRA_RETURN_RESULT, true)
}
startActivityForResult(intent, YOUR_REQUEST_CODE_HERE)

文档:https://developer.android.com/reference/android/content/Intent.html#ACTION_UNINSTALL_PACKAGE

这将返回一个结果a

来自文档:

The returned result code will be Activity.RESULT_OK on success or Activity.RESULT_FIRST_USER on failure.

开始API 21 Android添加了一个辅助方法

PackageInstaller.uninstall (String packageName, 
IntentSender statusReceiver)

在下面的链接中阅读有关更改的更多信息,说明从 Android Q 开始,上述更新方法也已弃用。

https://developer.android.com/reference/android/content/pm/PackageInstaller.html#uninstall(java.lang.String,%20android.content.IntentSender)

关于android - 由于 android 中的卸载 Intent,结果代码始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13992093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com