相关疑难解决方法(0)

如何以编程方式删除用户安装的证书?

我以编程方式安装了证书.

我可以通过去手动卸载它 Settings -> Security -> Trusted Credentials -> User -> Choose the certificate and click the remove button

我想以编程方式删除证书.

这是我尝试过的代码,但它没有用.

javax.security.cert.X509Certificate x509 = javax.security.cert.X509Certificate.getInstance(caRootCertBytes);

KeyStore ks = KeyStore.getInstance("AndroidCAStore")
if (ks != null) 
{
    ks.load(null, null);
    Enumeration<String> aliases = ks.aliases();
    while (aliases.hasMoreElements()) 
    {
        String alias = (String) aliases.nextElement();
        java.security.cert.X509Certificate cert = (java.security.cert.X509Certificate) ks.getCertificate(alias);
        String name = x509.getIssuerDN().getName();                             
        if (cert.getIssuerDN().getName().contains(name)) 
        {
            ks. deleteEntry(alias)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

参考我为什么选择deleteEntry

这是我得到的错误日志

05-19 18:27:40.789: W/System.err(14588): java.lang.UnsupportedOperationException
05-19 18:27:40.792: W/System.err(14588):    at com.android.org.conscrypt.TrustedCertificateKeyStoreSpi.engineDeleteEntry(TrustedCertificateKeyStoreSpi.java:82)
05-19 18:27:40.792: W/System.err(14588): …
Run Code Online (Sandbox Code Playgroud)

java android ssl-certificate

15
推荐指数
2
解决办法
3266
查看次数

以编程方式删除我的应用程序(Android)

我想在按钮点击时卸载我的应用程序.为此,我使用以下代码.

Uri packageURI = Uri.parse("package:"+packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
startActivity(uninstallIntent);
Run Code Online (Sandbox Code Playgroud)

它给了我结果,但我想直接删除而不点击对话框的"确定"按钮,并显示消息"此应用程序将被卸载".

我只想直接卸载应用程序.

android uninstall

14
推荐指数
2
解决办法
1万
查看次数

在android中卸载应用程序时调用广播接收器

我想在应用程序上清理我的应用程序创建的垃圾UnInstalling.

使用ManiFest文件: -

在清单文件中添加:

 <receiver android:name="com.netdoers.com.ui.CleanReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.PACKAGE_REMOVED" >
            </action>
            <data android:scheme="package"/>
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

创建接收器以捕获 BroadCast Event

public class CleanReceiver extends BroadcastReceiver
{
  public void onReceive(Context context, Intent intent) {
    CustomToast.showToastMessage(context, "Uninstalling Application");
    Log.e("Uninstall", "CleanReceiver Called");
  }
} 
Run Code Online (Sandbox Code Playgroud)

在Java代码: -

 BroadCastReceiver br = new CleanReceiver();
 IntentFilter intentFilter = new IntentFilter();
 intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
 intentFilter.addDataScheme("package");
 registerReceiver(br, intentFilter);
Run Code Online (Sandbox Code Playgroud)

但是在卸载应用程序时,接收器从未被调用过.

Java和Manifest都不会在卸载应用程序时调用Receiver.如何在卸载应用程序时捕获广播事件?

android android-package-managers android-broadcast

6
推荐指数
1
解决办法
7015
查看次数