2012-02-09 3 views
1

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(); 
} 

답변

1

- 앱이 화면에 사용자의 지식없이 응용 프로그램 위젯 를 넣을 수있는 권한이 나던 . 당신이 가진 유일한 방법은 사용자가 을 목록에서 선택하도록하거나,/app/app 폴더에 앱을 설치하고 에 설치해야합니다. 이렇게하면 앱이 필요한 모든 권한을 가진 시스템 앱입니다.

+0

appWidget이 광산인데도 appWidget이 같은 애플리케이션 내에 있더라도? 그런 일은 보안 대책이 아니기 때문에 가능하지 않습니까? –

+0

내가 쓴 것처럼 사용자는 안드로이드 시스템의 미리 정의 된 위젯 목록에서 위젯을 선택해야합니다. 그렇지 않으면 앱이 시스템 앱입니다. 작은 예 : 멋진 앱을 작성하고 위젯을 포함하면 사용자가 앱을 설치합니다. 설치 프로세스 또는 앱을 처음 실행할 때 활동은 사용자 작업 영역에 위젯을 설치합니다. 이제 보안 문제 : 위젯이 모든 사용자의 연락처를 읽고이를 서버로 보냅니다. 사용자의 지식 없이도 슬픈 앱 위젯에 대해 아무 것도 할 수 없습니다. – Andreas

+0

더 자세히 설명해주세요. 내 앱 안에 appWidget을 넣으면, 내가 부여한 권한 만 가져 오므로, 액티비티와 appWidget이 모두 표시되므로 내 액티비티 내에서 그 권한을 사용하는 appWidget을 놀라게 할 수 없다. 동일한 애플리케이션의 일부 –