我们收到了playStore的政策通知:
您的应用清单请求呼叫记录权限组(例如READ_CALL_LOG,WRITE_CALL_LOG,PROCESS_OUTGOING_CALLS)
必须将其主动注册为设备上的默认电话或助理处理程序.
我无法理解设备上的助理处理程序.任何意见或建议都是最受欢迎的.
android应用程序满足要求的最低要求是什么.
在实现设备所有权之后,我试图实现一种方法来指示设备将任何给定的应用程序锁定到信息亭模式(或屏幕固定模式).由于我拥有设备所有权,因此不会要求用户获得许可.
在开发者网站上,简要说明告诉我可以做我正在尝试的事情:
http://developer.android.com/about/versions/android-5.0.html#ScreenPinning
以编程方式:要以编程方式激活屏幕固定,请从您的应用程序调用startLockTask().如果请求的应用程序不是设备所有者,则会提示用户进行确认.设备所有者应用程序可以调用setLockTaskPackages()方法,以便在没有用户确认步骤的情况下使应用程序可以固定.
这表明作为设备所有者应用程序,我可以在没有用户确认的情况下锁定其他应用程序...但我不知道如何操作.
我已经能够将自己的应用程序置于固定模式.
任何帮助,将不胜感激.
android device-policy-manager android-5.0-lollipop android-screen-pinning device-owner
所以现在我正在为我的孩子们开发一个Android应用程序.我想在特定时间内在选定的应用程序上设置一个或多个密码,以防止他们打开应用程序.例如,假设我的女儿在我工作的时候想在我的手机上播放愤怒的小鸟一段时间.我将选择我的重要应用程序,如消息,gmail等,并在她玩愤怒的小鸟时将针或密码放在上面30分钟.30分钟后,我从女儿那里拿到手机,因为时间限制到期,我可以不用别针打开应用程序.
我已经对此做了大量的研究,但是我无法找到针对我的具体案例的实现.
我知道app锁具有类似我想做的结构.我只想给锁定一个时间限制.
https://play.google.com/store/apps/details?id=com.domobile.applock&hl=en
我远离使用ActivityManager等杀死活动/应用程序.我真的只想在特定时间内在所选应用程序上使用干净的锁定屏幕.
我有一个CountdownTimer来计算我设定的时间计时器.如果我拥有所有的包名,我将如何修改此代码以在选定的时间内阻止某些应用程序?
start_timer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new AlertDialog.Builder( MainActivity.this )
.setMessage( "Are you sure you want to block the selected apps for the set amount of time?" )
.setPositiveButton( "Yeah man!", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.d( "AlertDialog", "Positive" );
hourint = Integer.valueOf(number_text.getText().toString());
minuteint = Integer.valueOf(minute_text.getText().toString());
secondint = Integer.valueOf(second_text.getText().toString());
Log.i("YourActivity", "Hours: " + hourint);
Log.i("YourActivity", "Minutes: " + minuteint);
Log.i("YourActivity", "Seconds: " + secondint); …
Run Code Online (Sandbox Code Playgroud) java android countdown android-package-managers device-policy-manager
public final static void lockDevice()
{
try
{
if (devicePolicyManager.isAdminActive(adminComponent))
{
devicePolicyManager.lockNow();
}
}
catch (final Exception ex)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码不会抛出任何异常,也不会锁定motorola xoom平板电脑的屏幕.(Homeycomb和Icecream Sandwitch)相同的代码在其他Homeycomb和ICS平板电脑上完美运行.
我用Google搜索,但没有得到任何解决方案.有任何想法吗.....?
新的Android Lollipop API提供了一对新的方法来获取和设置对其他应用程序的限制:DevicePolicyManager.getApplicationRestrictions和DevicePolicyManager.setApplicationRestrictions
在BasicManagedProfile示例应用程序中使用了一个示例,通过传递一组似乎与Chrome发布的策略列表相关的键/值对来设置Chrome应用程序的限制.这对我来说非常适合.
但我找不到任何其他可以通过这种方式限制的应用程序的文档.有没有人知道可以用这些方法限制的任何其他应用程序,以及可以设置的密钥?
DevicePolicyManager.getApplicationRestrictions似乎只返回您已为该应用设置的限制,而不是所有可用限制的列表.我也尝试在Chrome上使用RestrictionsManager.getManifestRestrictions,但这会返回一个空列表,所以我认为这是不同的.
android google-chrome device-policy-manager android-5.0-lollipop
我有一个应用程序,可以通过下面的 JSON 中的 QR 码在 Android 12 及以上的设备上成功设置为设备所有者:
{
"android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME":
"package.CustomDeviceAdminReceiver",
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM":
"actual_checksum",
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION":
"https://Site/APK_Link",
"android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED": true
}
Run Code Online (Sandbox Code Playgroud)
应用程序包含声明的接收者:
<receiver
android:name=".deviceadmin.CustomDeviceAdminReceiver"
android:description="@string/app_name"
android:label="@string/app_name"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/enterprise_device_admin" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
<action android:name="android.app.action.PROFILE_PROVISIONING_COMPLETE" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
对于 Android 12(如此处所述https://source.android.com/devices/tech/admin/provision),我添加了 2 个活动:
<activity
android:name=".deviceadmin.AdminPolicyComplianceActivity"
android:screenOrientation="portrait"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<intent-filter>
<action android:name="android.app.action.ADMIN_POLICY_COMPLIANCE"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".deviceadmin.ProvisioningModeActivity"
android:screenOrientation="portrait"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<intent-filter>
<action android:name="android.app.action.GET_PROVISIONING_MODE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
第一个:
public class ProvisioningModeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle …
Run Code Online (Sandbox Code Playgroud) android provisioning device-policy-manager device-owner android-12
Lollipop API提供了2个新功能"Profile Owner"和"Device Owner"(http://developer.android.com/about/versions/android-5.0.html#Enterprise).在它们之间,它们提供了我需要的应用程序所需的功能,父母可以使用它来控制孩子的设备活动.每个的设置流程是:
在设备设置期间,使用NFC,您可以告诉Android您希望您的应用成为设备所有者.Android然后从URL下载应用程序,并且设备已加密并作为设备所有者配置应用程序.因此,对于从Google Play安装我的应用程序的人,我需要该应用程序提示他们重置他们的设备,然后在另一台设备上安装另一个应用程序,然后NFC将它们组合在一起.随着设置流程的进行,这远非理想.但是一旦设置,设备所有者API就为此用例提供了非常丰富的功能集.
此设置更直接:用户从Google Play安装应用程序,然后可以提示您为应用程序配置文件所有者权限.如果用户同意,则设备由Android加密,并且在重新启动后,设备具有使用相同启动器(主屏幕)的2个"共存"配置文件.设置可能更直接,但最终结果并不是我真正需要的,因为应用程序只能控制托管配置文件下的应用程序.
所以我想我实际上有两个问题:是否可以创建一个控制整个用户配置文件的配置文件所有者应用程序,即不是共存的托管配置文件?或者是否可以使用更简单的设置流程创建设备所有者应用程序,不需要恢复出厂设置和NFC凹凸(根不是一个选项)?两种方法之间的某些中间地带是理想的.
android nfc device-policy-manager android-5.0-lollipop device-owner
我有一项服务,我想要服务推广,以启用它作为设备管理员,直到现在我从服务启动这种类型的UI交互,如
Intent intent2 = new Intent();
intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent2.setAction(android.content.Intent.ACTION_VIEW);
intent2.setDataAndType(uri, "application/vnd.android.package-archive");
context.startActivity(intent2);
Run Code Online (Sandbox Code Playgroud)
它的工作原理,但使用DevicePolicyManager我找不到方法:
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "some text.");
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
不起作用:不要宣传任何东西,但也不要崩溃.没有intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
它只是崩溃,因为这段代码在服务内部.想法?
我试图在安装之前从 apk 文件中获取签名,但是我得到的是空的signingInfo 对象。PackageInfo 已正确填充与包相关的所有其他数据。
如果我安装 apk,然后使用 getPackageInfo,则将填充签名信息。不知道为什么它无法从 apk 本身获取它。
我是否遗漏了从 apk 文件获取签名的过程?
// This call works after installing the apk, it is able to pull the signature without issues
@Override
public boolean isPackageSignatureValid(final String packageName)
{
try
{
android.content.pm.PackageManager pm = context.getPackageManager();
PackageInfo packageInfo = pm.getPackageInfo(packageName, android.content.pm.PackageManager.GET_SIGNING_CERTIFICATES);
return validateSignature(packageInfo);
}
catch (android.content.pm.PackageManager.NameNotFoundException notFoundException)
{
return false;
}
}
// Calling this on the apk file prior to install, signingInfo is always null
@Override
public boolean isApkSignatureValid(final String apkFilePath)
{ …
Run Code Online (Sandbox Code Playgroud) android ×10
device-owner ×3
adb ×1
android-12 ×1
block-device ×1
countdown ×1
java ×1
locking ×1
motorola ×1
nfc ×1
phone-call ×1
provisioning ×1
task ×1