接收来自我的应用的意图“android.settings.APPLICATION_DETAILS_SETTINGS”

3
我希望能够获取接收到的意图的包名类名,但是我无法获得它。我想让我的应用程序更加安全,所以在卸载之前需要输入密码。只有安装了该应用程序的用户才知道密码,因此只有他/她可以卸载该应用程序。

我的接收器代码:

public class PackageReceiver extends BroadcastReceiver { 
@ Override 
public void onReceive (Context context, Intent intent) { 
if (intent.getAction().equals("android.settings.APPLICATION_DETAILS_SETTINGS")) { 
/ / TODO: 
//I want here to get this getAction working and then I want to fetch package and class of the intent
} 

} 
} 

清单文件:

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.RESTART_PACKAGES"/> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

<Application 
android: icon = "@ drawable / ic_launcher" 
android: label = "Test"> 

<Receiver android: name = ". PackageReceiver" 
android: label = "@ string / app_name"> 
<intent-filter> 
<action android:name="android.settings.APPLICATION_DETAILS_SETTINGS" /> 
<data android:scheme="package" /> 
</ Intent-filter> 
</ Receiver> 
</ Application> 

请告诉我是否缺少任何权限,因为我无法让这个工作起来。

@Clarvoyant,你是怎么完成任务的?能帮我一下吗? - user3233280
4个回答

0
当我们在设置屏幕中选择特定的应用程序时,将使用android.intent.action.QUERY_PACKAGE_RESTART类型的广播,并将应用程序的包名称作为额外信息发送。我认为您可以使用它来触发密码对话框。
接收器代码将类似于以下内容:
public void onReceive(Context context, Intent intent) {
    String[] packageNames = intent.getStringArrayExtra("android.intent.extra.PACKAGES"); 

    if(packageNames!=null){
        for(String packageName: packageNames){
            if(packageName!=null && packageName.equals("our_app_package_name")){
                //Our app was selected inside settings. Fire Password Dialog. 
            }
        }
    }
}

此接收器未被触发。 - user3233280

0
我个人认为这种行为很烦人。而且肯定是多余的:已经有其他机制可以解决同样的问题(屏幕锁定、加密)。
只在操作在您这一方面时才会使用额外的检查(例如:删除账户、更改电子邮件等)。
如果我没有成功地阻止您这样做,在这里还有另一篇帖子,它以类似的方向解决了相同的问题。

-1

我不知道这是否可接受

通过从活动上下文获取包名称来设置软件包

intent.setPackage(context.getPackageName());

获取包名

intent.getPackage()

-1
我认为 intent.getExtra("com.android.settings.ApplicationPkgName") 应该包含应用程序的包名。

1
我甚至无法接收此意图。你能发布一个可用的示例链接吗?谢谢。 - Anand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接