Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将已安装的小部件添加到我的Android活动时出错_Java_Android_Android Widget_Android Appwidget_Android Launcher - Fatal编程技术网

Java 将已安装的小部件添加到我的Android活动时出错

Java 将已安装的小部件添加到我的Android活动时出错,java,android,android-widget,android-appwidget,android-launcher,Java,Android,Android Widget,Android Appwidget,Android Launcher,我试图允许我的启动器添加一个自定义安装的小部件,就像股票启动器一样 我的代码没有显示任何错误,但当我运行应用程序时,它会在此活动中崩溃 这是它显示的错误 03-11 15:13:55.993 4576-4576/com.example.easylauncher I/art﹕ Late-enabling -Xcheck:jni 03-11 15:13:55.993 4576-4576/com.example.easylauncher I/art﹕ VMHOOK: rlim_cur :

我试图允许我的启动器添加一个自定义安装的小部件,就像股票启动器一样

我的代码没有显示任何错误,但当我运行应用程序时,它会在此活动中崩溃

这是它显示的错误

03-11 15:13:55.993    4576-4576/com.example.easylauncher I/art﹕ Late-enabling -Xcheck:jni
03-11 15:13:55.993    4576-4576/com.example.easylauncher I/art﹕ VMHOOK: rlim_cur : 0 pid:4576
03-11 15:13:56.023    4576-4586/com.example.easylauncher I/art﹕ Debugger is no longer active
03-11 15:13:56.133    4576-4576/com.example.easylauncher D/Atlas﹕ Validating map...
03-11 15:13:56.193    4576-4595/com.example.easylauncher I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LA.BF.1.1_RB1.05.00.00.002.030_msm8974_refs/tags/AU_LINUX_ANDROID_LA.BF.1.1_RB1.05.00.00.002.030__release_AU ()
    OpenGL ES Shader Compiler Version: E031.25.03.00
    Build Date: 12/11/14 Thu
    Local Branch:
    Remote Branch: refs/tags/AU_LINUX_ANDROID_LA.BF.1.1_RB1.05.00.00.002.030
    Local Patches: NONE
    Reconstruct Branch: NOTHING
03-11 15:14:00.983    4576-4576/com.example.easylauncher E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.easylauncher, PID: 4576
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.easylauncher/com.example.easylauncher.AdvancedActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.appwidget.AppWidgetHost.allocateAppWidgetId()' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2322)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:155)
            at android.app.ActivityThread.main(ActivityThread.java:5696)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.appwidget.AppWidgetHost.allocateAppWidgetId()' on a null object reference
            at com.example.easylauncher.AdvancedActivity.<init>(AdvancedActivity.java:56)
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.Class.newInstance(Class.java:1572)
            at android.app.Instrumentation.newActivity(Instrumentation.java:1083)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2312)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474)
            at android.app.ActivityThread.access$800(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:155)
            at android.app.ActivityThread.main(ActivityThread.java:5696)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
03-11 15:13:55.993 4576-4576/com.example.easylancher I/art﹕ 延迟启用-Xcheck:jni
03-11 15:13:55.993 4576-4576/com.example.easylauncher I/art﹕ VMHOOK:rlim_cur:0 pid:4576
03-11 15:13:56.023 4576-4586/com.example.easylauncher I/art﹕ 调试器不再处于活动状态
03-11 15:13:56.133 4576-4576/com.example.easylauncher D/Atlas﹕ 正在验证映射。。。
03-11 15:13:56.193 4576-4595/com.example.easylauncher I/Adreno EGL﹕ : EGL 1.4高通公司构建:AU_LINUX_ANDROID_LA.BF.1.1_RB1.05.00.00.002.030_msm8974_refs/tags/AU_LINUX_ANDROID_LA.BF.1.1_RB1.05.00.00.002.030_发布版_AU()
OpenGL ES着色器编译器版本:E031.25.03.00
建造日期:2014年11月12日星期四
本地分行:
远程分支:refs/tags/AU_LINUX_ANDROID_LA.BF.1.1_RB1.05.00.00.002.030
本地修补程序:无
重建分支:没有
03-11 15:14:00.983 4576-4576/com.example.easylauncher E/AndroidRuntime﹕ 致命异常:主
进程:com.example.easylancher,PID:4576
java.lang.RuntimeException:无法实例化活动组件信息{com.example.easylauncher/com.example.easylauncher.AdvancedActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int-android.appwidget.AppWidgetHost.allocateAppWidgetId()”
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2322)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474)
在android.app.ActivityThread.access$800(ActivityThread.java:144)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:155)
位于android.app.ActivityThread.main(ActivityThread.java:5696)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int android.appwidget.AppWidgetHost.allocateAppWidgetId()”
位于com.example.easylancher.AdvancedActivity。(AdvancedActivity.java:56)
位于java.lang.reflect.Constructor.newInstance(本机方法)
位于java.lang.Class.newInstance(Class.java:1572)
位于android.app.Instrumentation.newActivity(Instrumentation.java:1083)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2312)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2474)
在android.app.ActivityThread.access$800(ActivityThread.java:144)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:155)
位于android.app.ActivityThread.main(ActivityThread.java:5696)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
这是我的代码:

public class AdvancedActivity extends Activity {
    DrawerAdapter drawerAdapterObject;
    GridView drawerGrid;
    SlidingDrawer slidingDrawer;
    RelativeLayout homeView;
    class Pac{
        Drawable icon;
        String name;
        String packageName;
        String label;
    }
    Pac[] pacs;
    PackageManager pm;


    static boolean appLaunchable = true;

    Button widgetButton;
    AppWidgetManager appWidgetManager;
    AppWidgetHost appWidgetHost;
    AppWidgetProviderInfo newAppWidgetProviderInfo = new AppWidgetProviderInfo();

    // Get an id
    int appWidgetId = appWidgetHost.allocateAppWidgetId();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_advanced);

        drawerGrid = (GridView) findViewById(R.id.content);
        slidingDrawer = (SlidingDrawer) findViewById(R.id.drawer);
        homeView = (RelativeLayout) findViewById(R.id.home_view);
        pm =getPackageManager();
        set_pacs();
        slidingDrawer.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener() {

            @Override
            public void onDrawerOpened() {
                appLaunchable=true;
            }
        });

        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_PACKAGE_ADDED);
        filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        filter.addDataScheme("package");
        registerReceiver(new PacReceiver(), filter);

        appWidgetManager = AppWidgetManager.getInstance(this);
        appWidgetHost = new AppWidgetHost(this, 1);

        addwidgetButtonListener();
    }


    public void show (){
        ListView listView = new ListView(this);
        listView.setAdapter(new ArrayAdapter<String>(this, R.layout.dialog_list, new String[]{"Themes", "Settings", "Help"}));
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            // arg0 is your adapter, arg1 is the view clicked, arg2 is the position and arg3 is the id.
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                switch(arg2){
                    case(1): //change 0 for themes 1 for advanced 2 for help
                        Intent intent= new Intent(AdvancedActivity.this,SettingsActivity.class);
                        startActivity(intent);
                        break;
                    case(0):
                        Toast.makeText(getApplicationContext(), "Coming soon!", Toast.LENGTH_SHORT).show();
                        break;

                    case(2):
                        Toast.makeText(getApplicationContext(), "Coming soon!", Toast.LENGTH_SHORT).show();
                        break;

                    default:
                        break;
                }
            }
        });
        Dialog dialog = new Dialog(this);
        dialog.setTitle("Settings");
        dialog.setContentView(listView);
        dialog.show();

    }

    final GestureDetector gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
        public void onLongPress(MotionEvent m) {
//enter long press here
            show();

        }
    });

    public boolean onTouchEvent(MotionEvent event) {
        return gestureDetector.onTouchEvent(event);
    }

    public void set_pacs(){
        Intent mainIntent = new Intent(Intent.ACTION_MAIN,null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        List<ResolveInfo> pacsList = pm.queryIntentActivities(mainIntent, 0);
        pacs = new Pac[pacsList.size()];
        for(int I=0;I<pacsList.size();I++){
            pacs[I]= new Pac();
            pacs[I].icon=pacsList.get(I).loadIcon(pm);
            pacs[I].packageName=pacsList.get(I).activityInfo.packageName;
            pacs[I].name=pacsList.get(I).activityInfo.name;
            pacs[I].label=pacsList.get(I).loadLabel(pm).toString();
        }
        new SortApps().exchange_sort(pacs);
        drawerAdapterObject = new DrawerAdapter(this, pacs);
        drawerGrid.setAdapter(drawerAdapterObject);
        drawerGrid.setOnItemClickListener(new DrawerClickListener(this, pacs, pm));
     //for long click   drawerGrid.setOnItemLongClickListener(new DrawerLongClickListener(this, slidingDrawer, homeView,pacs));
    }

    public class PacReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            set_pacs();
        }

    }

    public void createwidget(){
        // Get the list of installed widgets
        List<AppWidgetProviderInfo> appWidgetInfos = new ArrayList<AppWidgetProviderInfo>();
        appWidgetInfos = appWidgetManager.getInstalledProviders();



// Create Widget
        AppWidgetHostView hostView = appWidgetHost.createView(this, appWidgetId, newAppWidgetProviderInfo);
        hostView.setAppWidget(appWidgetId, newAppWidgetProviderInfo);

// Add it to your layout
        RelativeLayout rl = (RelativeLayout) findViewById(R.id.home_view);
        rl.addView(hostView);
    }

    public void addwidgetButtonListener() {

        widgetButton = (Button) findViewById(R.id.button);
        widgetButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
                createwidget();
            }
        });
    }
}
公共类AdvancedActivity扩展活动{
付款人付款人对象;
GridView抽屉网格;
滑动抽屉滑动抽屉;
相对论家庭观;
Pac类{
可绘制图标;
字符串名;
字符串封装名称;
字符串标签;
}
Pac[]pacs;
包装经理;
静态布尔appLaunchable=true;
按钮widgetButton;
AppWidgetManager AppWidgetManager;
AppWidgetHost AppWidgetHost;
AppWidgetProviderInfo newAppWidgetProviderInfo=新建AppWidgetProviderInfo();
//取得身份证
int-appWidgetId=appWidgetHost.allocateAppWidgetId();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_advanced);
DroperGrid=(GridView)findViewById(R.id.content);
slidingDrawer=(slidingDrawer)findViewById(R.id.drawer);
homeView=(RelativeLayout)findViewById(R.id.home\u视图);
pm=getPackageManager();
set_pacs();
slidingDrawer.setOnDrawerOpenListener(新的slidingDrawer.OnDrawerOpenListener(){
@凌驾
公开作废已作废(){
appLaunchable=true;
}
});
IntentFilter=newintentfilter();
filter.addAction(Intent.ACTION\u PACKAGE\u ADDED);
filter.addAction(Intent.ACTION\u PACKAGE\u已删除);
filter.addAction(Intent.ACTION\u PACKAGE\u已更改);
filter.addDataScheme(“包”);
registerReceiver(新的PacReceiver(),过滤器);
appWidgetManager=appWidgetManager.getInstance(此);
appWidgetHost=新的appWidgetHost(这个,1);
addwidgetButtonListener();
}
公开展览(){
ListView ListView=新建ListView(此);
setAdapter(新的ArrayAdapter(这个,R.layout.dialog_列表,新的字符串[]{“Themes”,“Settings”,“Help”});
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
//arg0是适配器,arg1是单击的视图,arg2是位置,arg3是id。
int appWidgetId;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_advanced);

    //.. other code
   appWidgetManager = AppWidgetManager.getInstance(this);
   appWidgetHost = new AppWidgetHost(this, 1);
   appWidgetId = appWidgetHost.allocateAppWidgetId()