Java 锁屏小部件不工作,也不显示任何内容
我正在开发屏幕锁定小部件或以编程方式锁定屏幕。我从前面的问题中得到了一些好的想法,我做了一些很好的事情,但是当我运行代码时,没有异常和错误。但当我跑的时候,它什么也看不出来。 我想要的是,当用户单击小部件时,它会锁定屏幕 Manifest.xml文件 ` } Appwidgetprovider.javaJava 锁屏小部件不工作,也不显示任何内容,java,android,xml,Java,Android,Xml,我正在开发屏幕锁定小部件或以编程方式锁定屏幕。我从前面的问题中得到了一些好的想法,我做了一些很好的事情,但是当我运行代码时,没有异常和错误。但当我跑的时候,它什么也看不出来。 我想要的是,当用户单击小部件时,它会锁定屏幕 Manifest.xml文件 ` } Appwidgetprovider.java 公共类NewAppWidget扩展了AppWidgetProvider{ 私有静态最终内部管理意图=15; 私有静态最终字符串描述=“示例管理员描述”; 私有设备policymanager m
公共类NewAppWidget扩展了AppWidgetProvider{
私有静态最终内部管理意图=15;
私有静态最终字符串描述=“示例管理员描述”;
私有设备policymanager mDevicePolicyManager;
私有组件名称mComponentName;
@凌驾
公共void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,int[]AppWidgetId){
//可能有多个窗口小部件处于活动状态,因此请更新所有窗口小部件
final int N=appWidgetIds.length;
对于(int i=0;i
AdminManageReceiver.java
公共类AdminManageReceiver扩展DeviceAdminReceiver{
}首先,您可能无法对
设备管理员接收器
和应用程序WidgetProvider
使用单个。使用应用程序小部件的Android可能不具有Android.permission。绑定设备管理权限,阻止它们使用您的
。使用两个单独的>
元素,一个用于DeviceAdminReceiver
,一个用于AppWidgetProvider
其次,请记住,锁屏上的应用程序小部件仅在安卓4.2至4.4上受支持。安卓的旧版本和新版本不支持此功能。我在安卓系统中更强大,我放置了第二个接收器,但无法工作。请编辑我的代码并更正,谢谢回复
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<activity
android:name=".MainActivity"
android:theme="@android:style/Theme.NoDisplay"
android:label="@string/app_name"
android:excludeFromRecents="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.ASSIST" />
</intent-filter>
</activity>
<receiver android:name=".NewAppWidget"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/new_app_widget_info" />
</receiver>
</application>
final static int ENABLE_ADMIN = 1;
final static int SUCESS = -1;
private ComponentName mAdminName = null;
public final void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAdminName = new ComponentName(this, AdminManageReceiver.class);
DevicePolicyManager mDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
if (!mDevicePolicyManager.isAdminActive(mAdminName)) {
showAdminManagement();
}
if (mDevicePolicyManager.isAdminActive(mAdminName)) {
mDevicePolicyManager.lockNow();
}
else {
Log.e("screenlock", "Unable to lock the phone D:");
}
finish();
}
private void showAdminManagement() {
// TODO Auto-generated method stub
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mAdminName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
R.string.desc_enable_admin);
startActivityForResult(intent, ENABLE_ADMIN);
}
public class NewAppWidget extends AppWidgetProvider {
private static final int ADMIN_INTENT = 15;
private static final String description = "Sample Administrator description";
private DevicePolicyManager mDevicePolicyManager;
private ComponentName mComponentName;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
//updateAppWidget(context, appWidgetManager, appWidgetIds[lock]);
Intent intent = new Intent(context,MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
RemoteViews View = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
View.setOnClickPendingIntent(R.id.imageButton, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, View);
}
}