app-launcher에 추가 할 수있는 appWidget이있는 Android 프로젝트가 있다고 가정 해 보겠습니다. 프로젝트에는 내가 만든 appWidget을 보여주는 활동도 있습니다.android appWidget - 사용자 확인없이 내 appWidget 넣기
probelm : 런처의 경우 appWidget이 완벽하게 작동하고 사용자 클릭에 응답하지만 활동의 경우 미리보기 인 것처럼 표시됩니다.
다른 appWidget을 표시하려고 시도했지만 성공한 것으로 나타났습니다. 그러나 버튼을 클릭하면 터치 이벤트를 처리 할 수있는 것처럼 클릭 효과가있는 것처럼 보입니다. appWidget에는 나중에 사용자 클릭 외에도 추가 기능이있을 수 있습니다.
누구든지이 문제를 처리하기 위해 무엇을 할 수 있습니까? 그런 일을하는 것이 가능할지라도, 그렇지 않다면 왜 (응용 프로그램의 일부이기 때문에)? appWidget이 복잡한 것일 수 있으므로 가능한 한 appWidget을 조금 변경하고 싶습니다. 여기
그것을 보여주기 위해 appWidget보기를 취득하기위한 코드 조각입니다 :이 확인 보안상의 이유로입니다public View fetchAppWidgetView(final Context context, final ComponentName componentName)
{
final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
_appWidgetHost = new AppWidgetHost(context, INSTANCES_ID_PROVIDER);
// get appWidgetInfo :
final List<AppWidgetProviderInfo> infos = appWidgetManager.getInstalledProviders();
AppWidgetProviderInfo appWidgetInfo = null;
for (final AppWidgetProviderInfo info:infos)
if (info.provider.getClassName().equals(componentName.getClassName()) && info.provider.getPackageName().equals(componentName.getPackageName()))
{
appWidgetInfo = info;
break;
}
if (appWidgetInfo == null)
return null;
final int appWidgetId = _appWidgetHost.allocateAppWidgetId();
// create and put the new widget:
final AppWidgetHostView newWidget = _appWidgetHost.createView(context, appWidgetId, appWidgetInfo);
newWidget.setAppWidget(appWidgetId, appWidgetInfo);
_appWidgetHost.startListening();
return newWidget;
}
public void startListening()
{
//this method is called on the onStart() method of the activity
_appWidgetHost.startListening();
}
appWidget이 광산인데도 appWidget이 같은 애플리케이션 내에 있더라도? 그런 일은 보안 대책이 아니기 때문에 가능하지 않습니까? –
내가 쓴 것처럼 사용자는 안드로이드 시스템의 미리 정의 된 위젯 목록에서 위젯을 선택해야합니다. 그렇지 않으면 앱이 시스템 앱입니다. 작은 예 : 멋진 앱을 작성하고 위젯을 포함하면 사용자가 앱을 설치합니다. 설치 프로세스 또는 앱을 처음 실행할 때 활동은 사용자 작업 영역에 위젯을 설치합니다. 이제 보안 문제 : 위젯이 모든 사용자의 연락처를 읽고이를 서버로 보냅니다. 사용자의 지식 없이도 슬픈 앱 위젯에 대해 아무 것도 할 수 없습니다. – Andreas
더 자세히 설명해주세요. 내 앱 안에 appWidget을 넣으면, 내가 부여한 권한 만 가져 오므로, 액티비티와 appWidget이 모두 표시되므로 내 액티비티 내에서 그 권한을 사용하는 appWidget을 놀라게 할 수 없다. 동일한 애플리케이션의 일부 –