当用户点击画廊按钮时,我希望用户重定向到我的应用程序的活动,该活动将要求用户输入密码,然后将用户重定向回画廊。我想知道我应该使用哪些权限以及应该接受哪些广播。
问问题
229 次
4 回答
1
您需要完全替换图库应用程序才能执行您的建议。
当用户点击图库图标时,它不会触发广播。它发送一个将操作设置为 MAIN 的定向意图。
任何人告诉你如何做到这一点的任何事情都是错误的。你做不到。
您可以获得的最接近的方法是在您自己的应用程序中使用 MediaStore 来访问图库访问的相同图像。
于 2013-06-04T12:16:02.460 回答
1
好吧,如果你想锁定画廊,你可以用加密解密的方式来做......你可以使用 MediaStore 访问图像,然后使用你的应用程序加密,当用户再次想要访问时,你可以允许他通过解密来显示。 .. 阅读以下链接 我可以在 Android 中创建受密码保护的文件夹吗?
于 2013-06-04T12:26:07.020 回答
1
从您的应用程序启动一个线程,该线程应定期监视前台应用程序名称,在这种情况下应该是图库(我不记得确切的名称,但您可以使用以下逻辑找到它)。
然后,如果它是图库,请通过阻止它来打开您的活动。如果密码成功关闭活动和背景将是 Gellery 或以其他方式重定向到主页。
用于监控前台应用程序
try {
ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTasks = activityManager.getRunningTasks(1);
PackageManager pm = getApplicationContext().getPackageManager();
output1 = pm.getApplicationLabel(pm.getApplicationInfo(runningTasks.get(0).baseActivity.getPackageName(),PackageManager.GET_META_DATA)).toString();
String className = runningTasks.get(0).topActivity.getClassName();
if( className.contains("Gallery")) {
//better to create this object globally outside the thread.
Intent intentSettingLock = new Intent();
intentSettingLock.setClass(oContext,SettingsLockNew.class);
intentSettingLock.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
oContext.startActivity(intentSettingLock);
}
}
catch(Exception e) {
}
在密码无效时重定向到主页
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
this.finish();
于 2013-06-04T13:12:13.540 回答
-1
您无法按照您的描述执行此操作,因为从启动器中按下图库应用程序图标,系统会触发特定应用程序包的 action=MAIN 和 category=LAUNCHER 意图。由于您无法将应用程序包命名为图库包名称,因此您无法过滤此意图。
于 2013-06-04T12:33:26.660 回答